diff --git a/app/rtkplot/plotcmn.cpp b/app/rtkplot/plotcmn.cpp
index 7cb1fb05bd2f1b1e85f2c94f9aebc8140d712fd4..077588bd91fe210c85603466d31c084421f728f3 100644
--- a/app/rtkplot/plotcmn.cpp
+++ b/app/rtkplot/plotcmn.cpp
@@ -294,8 +294,8 @@ TColor __fastcall TPlot::ObsColor(const obsd_t *obs, double az, double el)
 {
     TColor color=clBlack;
     AnsiString ObsType_Text;
-    char *code="",*codeType="";
-    int i,frq,frqType,sys;
+    char *code="";
+    int i;
     
     trace(4,"ObsColor\n");
     
@@ -303,22 +303,18 @@ TColor __fastcall TPlot::ObsColor(const obsd_t *obs, double az, double el)
     
     if (PlotType==PLOT_SNR||PlotType==PLOT_SNRE) {
         ObsType_Text=ObsType2->Text;
-        codeType=ObsType_Text.c_str()+1;
-        frqType=ObsType2->ItemIndex;
+        code=ObsType_Text.c_str()+1;
     }
     else if (ObsType->ItemIndex) {
         ObsType_Text=ObsType->Text;
-        codeType=ObsType_Text.c_str()+1;
-        frqType=ObsType->ItemIndex;
+        code=ObsType_Text.c_str()+1;
     }
     if (SimObs) {
         color=SysColor(obs->sat);
     }
-    else if (*codeType) {
+    else if (*code) {
         for (i=0;i<NFREQ+NEXOBS;i++) {
-            sys=satsys(obs->sat,NULL);
-            code=code2obs(sys,obs->code[i],&frq);
-            if (frq!=frqType&&!strstr(code,codeType)) continue;
+            if (!strstr(code2obs(obs->code[i],NULL),code)) continue;
             color=SnrColor(obs->SNR[i]*0.25);
             break;
         }
diff --git a/app/rtkplot/plotdata.cpp b/app/rtkplot/plotdata.cpp
index 0e70b7c18a92a9cff6b20d0d276aece1714903a2..a9f37222ef5737767aa79d5caf6810d4cd5eb801 100644
--- a/app/rtkplot/plotdata.cpp
+++ b/app/rtkplot/plotdata.cpp
@@ -936,7 +936,7 @@ void __fastcall TPlot::SaveSnrMp(AnsiString file)
             if (Obs.data[j].sat!=i+1) continue;
             
             for (k=0;k<NFREQ+NEXOBS;k++) {
-                if (strstr(code2obs(0,Obs.data[j].code[k],NULL),code)) break;
+                if (strstr(code2obs(Obs.data[j].code[k],NULL),code)) break;
             }
             if (k>=NFREQ+NEXOBS) continue;
             
@@ -1203,10 +1203,14 @@ void __fastcall TPlot::UpdateMp(void)
         for (j=0;j<NFREQ+NEXOBS;j++) {
             Mp[j][i]=0.0;
             
-            code2obs(sys,data->code[j],&f1);
-
-            if      (sys==SYS_GAL) f2=f1==1?3:1; /* E1/E5b */
-            else if (sys==SYS_SBS) f2=f1==1?4:1; /* L1/L5 */
+            code2obs(data->code[j],&f1);
+            
+            if (sys==SYS_CMP) {
+                if      (f1==5) f1=2; /* B2 */
+                else if (f1==4) f1=3; /* B3 */
+            }
+            if      (sys==SYS_GAL) f2=f1==1?2:1; /* E1/E5b */
+            else if (sys==SYS_SBS) f2=f1==1?3:1; /* L1/L5 */
             else if (sys==SYS_CMP) f2=f1==1?2:1; /* B1/B2 */
             else                   f2=f1==1?2:1; /* L1/L2 */
             
@@ -1227,8 +1231,12 @@ void __fastcall TPlot::UpdateMp(void)
         for (j=k=n=0,B=0.0;j<Obs.n;j++) {
             if (Obs.data[j].sat!=sat) continue;
             
-            code2obs(sys,Obs.data[j].code[i],&f1);
-
+            code2obs(Obs.data[j].code[i],&f1);
+            
+            if (sys==SYS_CMP) {
+                if      (f1==5) f1=2; /* B2 */
+                else if (f1==4) f1=3; /* B3 */
+            }
             if      (sys==SYS_GAL) f2=f1==1?3:1;
             else if (sys==SYS_CMP) f2=f1==1?2:1;
             else                   f2=f1==1?2:1;
diff --git a/app/rtkplot/plotdraw.cpp b/app/rtkplot/plotdraw.cpp
index 147e4be59184dcb4c69cc652b9a10392a9ffb3d7..9de4ca8cbdabdab6c947b4d674534eb771233c5e 100644
--- a/app/rtkplot/plotdraw.cpp
+++ b/app/rtkplot/plotdraw.cpp
@@ -65,32 +65,6 @@ void __fastcall TPlot::UpdateDisp(void)
     }
     Flush=0;
 }
-// check ObsType for code or freq match ---------------------------------------------
-int __fastcall TPlot::CheckObsTypeForMatch(const obsd_t *obs,int i)
-{
-    AnsiString ObsTypeText=ObsType->Text;
-    char *obs1, *obsType;
-    int frq,frqType,sys;
-
-    obsType=ObsTypeText.c_str()+1;
-    frqType=ObsType->ItemIndex;
-    sys=satsys(obs->sat,NULL);
-    obs1=code2obs(sys,obs->code[i],&frq);
-    return frq==frqType||strstr(obs1,obsType);
-}
-// check ObsType2 for code or freq match ---------------------------------------------
-int __fastcall TPlot::CheckObsType2ForMatch(const obsd_t *obs,int i)
-{
-    AnsiString ObsTypeText=ObsType2->Text;
-    char *obs1, *obsType;
-    int frq,frqType,sys;
-
-    obsType=ObsTypeText.c_str()+1;
-    frqType=ObsType->ItemIndex;
-    sys=satsys(obs->sat,NULL);
-    obs1=code2obs(sys,obs->code[i],&frq);
-    return frq==frqType||strstr(obs1,obsType);
-}
 // draw track-plot ----------------------------------------------------------
 void __fastcall TPlot::DrawTrk(int level)
 {
@@ -280,7 +254,7 @@ void __fastcall TPlot::DrawTrk(int level)
         GraphT->ToPoint(xt,yt,p1);
         DrawMark(GraphT,p1,5,CColor[2],20,0);
     }
-	// update geview and gmview center
+    // update geview and gmview center
     if (level) {
         if (norm(OPos,3)>0.0) {
             GraphT->GetCent(xt,yt);
@@ -290,9 +264,9 @@ void __fastcall TPlot::DrawTrk(int level)
             enu2ecef(opos,enu,rr);
             for (i=0;i<3;i++) rr[i]+=OPos[i];
             ecef2pos(rr,cent);
-			GoogleMapView  ->SetCent(cent[0]*R2D,cent[1]*R2D);
-		}
-		Refresh_GEView();
+            GoogleMapView  ->SetCent(cent[0]*R2D,cent[1]*R2D);
+        }
+        Refresh_GEView();
     }
 }
 // draw map-image on track-plot ---------------------------------------------
@@ -1026,8 +1000,8 @@ void __fastcall TPlot::DrawObsSlip(double *yp)
             if (!SatSel[obs->sat-1]) continue;
             slip=0;
             for (j=0;j<NFREQ+NEXOBS;j++) {
-                if ((!*code||CheckObsTypeForMatch(obs,j))&&(obs->LLI[j]&2))
-                   slip=1;
+                if ((!*code||strstr(code2obs(obs->code[j],NULL),code))&&
+                    (obs->LLI[j]&2)) slip=1;
             }
             if (!slip) continue;
             if (!GraphR->ToPoint(TimePos(obs->time),yp[obs->sat-1],ps[0])) continue;
@@ -1046,9 +1020,8 @@ void __fastcall TPlot::DrawObsSlip(double *yp)
             slip=0;
             if (ShowSlip==2) { // LLI
                 for (j=0;j<NFREQ+NEXOBS;j++) {
-                    if ((!*code||CheckObsTypeForMatch(obs,j))&&
-                        (obs->LLI[j]&1))
-                        slip=1;
+                    if ((!*code||strstr(code2obs(obs->code[j],NULL),code))&&
+                        (obs->LLI[j]&1)) slip=1;
                 }
             }
             else if (!*code||!strcmp(code,"1")||!strcmp(code,"2")) {
@@ -1238,7 +1211,8 @@ void __fastcall TPlot::DrawSky(int level)
             slip=0;
             if (ShowSlip==2) { // LLI
                 for (j=0;j<NFREQ+NEXOBS;j++) {
-                    if ((!*code||CheckObsTypeForMatch(obs,j))&&(obs->LLI[j]&1)) slip=1;
+                    if ((!*code||strstr(code2obs(obs->code[j],NULL),code))&&
+                        (obs->LLI[j]&1)) slip=1;
                 }
             }
             else if (!*code||!strcmp(code,"1")||!strcmp(code,"2")) {
@@ -1332,14 +1306,14 @@ void __fastcall TPlot::DrawSky(int level)
             }
             else {
                 for (j=0;j<NFREQ+NEXOBS;j++) {
-                    if (CheckObsTypeForMatch(obs,j)) break;
+                    if (strstr(code2obs(obs->code[j],NULL),code)) break;
                 }
                 if (j>=NFREQ+NEXOBS) continue;
-
+                
                 s+=ss.sprintf("%s%s%s : %04.1f : %d : %s",obs->P[j]==0.0?"-":"C",
                               obs->L[j]==0.0?"-":"L",obs->D[j]==0.0?"-":"D",
                               obs->SNR[j]*0.25,obs->LLI[j],
-                              code2obs(0,obs->code[j],NULL));
+                              code2obs(obs->code[j],NULL));
             }
             TColor col=ObsColor(obs,Az[i],El[i]);
             p2.y+=hh;
@@ -1590,7 +1564,7 @@ void __fastcall TPlot::DrawSnr(int level)
                     if (Obs.data[j].sat!=sat) continue;
                     
                     for (k=0;k<NFREQ+NEXOBS;k++) {
-                        if (CheckObsType2ForMatch(&Obs.data[j],k)) break;
+                        if (strstr(code2obs(Obs.data[j].code[k],NULL),code)) break;
                     }
                     if (k>=NFREQ+NEXOBS) continue;
                     
@@ -1733,7 +1707,7 @@ void __fastcall TPlot::DrawSnrE(int level)
                 if (Obs.data[j].sat!=sat) continue;
                 
                 for (k=0;k<NFREQ+NEXOBS;k++) {
-                    if (CheckObsType2ForMatch(&Obs.data[j],k)) break;
+                    if (strstr(code2obs(Obs.data[j].code[k],NULL),code)) break;
                 }
                 if (k>=NFREQ+NEXOBS) continue;
                 if (El[j]<=0.0) continue;
@@ -1855,7 +1829,7 @@ void __fastcall TPlot::DrawMpS(int level)
             if (Obs.data[i].sat!=sat) continue;
             
             for (j=0;j<NFREQ+NEXOBS;j++) {
-                if (CheckObsType2ForMatch(&Obs.data[i],j)) break;
+                if (strstr(code2obs(Obs.data[i].code[j],NULL),code)) break;
             }
             if (j>=NFREQ+NEXOBS) continue;
             if (El[i]<=0.0) continue;
@@ -1881,7 +1855,7 @@ void __fastcall TPlot::DrawMpS(int level)
             obs=&Obs.data[i];
             if (SatMask[obs->sat-1]||!SatSel[obs->sat-1]||El[i]<=0.0) continue;
             for (j=0;j<NFREQ+NEXOBS;j++) {
-                if (CheckObsTypeForMatch(obs,j)) break;
+                if (strstr(code2obs(obs->code[j],NULL),code)) break;
             }
             if (j>=NFREQ+NEXOBS) continue;
             col=MpColor(!Mp[j]?0.0:Mp[j][i]);
@@ -2091,21 +2065,21 @@ void __fastcall TPlot::Refresh_GEView(void)
             sol=getsol(SolData+1,SolIndex[1]);
             ecef2pos(sol->rr,pos);
             pos[2]-=geoidh(pos);
-			GoogleMapView->SetMark(2,pos);
+            GoogleMapView->SetMark(2,pos);
             GoogleMapView->ShowMark(2);
         }
         else {
-			GoogleMapView->HideMark(2);
+            GoogleMapView->HideMark(2);
         }
         if (BtnSol1->Down&&SolData[0].n>0) {
             sol=getsol(SolData,SolIndex[0]);
             ecef2pos(sol->rr,pos);
             pos[2]-=geoidh(pos);
-			GoogleMapView->SetMark(1,pos);
+            GoogleMapView->SetMark(1,pos);
             GoogleMapView->ShowMark(1);
         }
         else {
-			GoogleMapView->HideMark(1);
+            GoogleMapView->HideMark(1);
         }
         // update heading
         if (opts[10]&&norm(pos,3)>0.0) {
@@ -2121,7 +2095,7 @@ void __fastcall TPlot::Refresh_GEView(void)
                 if      (GEHeading<-180.0) GEHeading+=360.0;
                 else if (GEHeading> 180.0) GEHeading-=360.0;
             }
-			delete vel;
+            delete vel;
         }
     }
     else {
diff --git a/app/rtkplot/plotinfo.cpp b/app/rtkplot/plotinfo.cpp
index 9d849d9a762df622536a273d63265ce5fb94e44f..2b0e67eff88c63491a0dce5c2fa869403732e871 100644
--- a/app/rtkplot/plotinfo.cpp
+++ b/app/rtkplot/plotinfo.cpp
@@ -318,8 +318,7 @@ void __fastcall TPlot::UpdateSatList(void)
 void __fastcall TPlot::UpdateObsType(void)
 {
     AnsiString s;
-    char *codes[MAXCODE+1];
-	const char *freqs[]={"L1","L2/E5b","L5","E6","E5ab"};
+    char *codes[MAXCODE+1],freqs[]="125678";
     int i,j,n=0,cmask[MAXCODE+1]={0},fmask[6]={0};
     
     trace(3,"UpdateObsType\n");
@@ -329,8 +328,7 @@ void __fastcall TPlot::UpdateObsType(void)
     }
     for (i=1;i<=MAXCODE;i++) {
         if (!cmask[i]) continue;
-
-        codes[n++]=code2obs(satsys(Obs.data[i].sat,NULL),i,&j);
+        codes[n++]=code2obs(i,&j);
         fmask[j-1]=1;
     }
     ObsType ->Items->Clear();
@@ -339,8 +337,8 @@ void __fastcall TPlot::UpdateObsType(void)
     
     for (i=0;i<6;i++) {
         if (!fmask[i]) continue;
-        ObsType ->Items->Add(s.sprintf("%s",freqs[i]));
-        ObsType2->Items->Add(s.sprintf("%s",freqs[i]));
+        ObsType ->Items->Add(s.sprintf("L%c",freqs[i]));
+        ObsType2->Items->Add(s.sprintf("L%c",freqs[i]));
     }
     for (i=0;i<n;i++) {
         ObsType ->Items->Add(s.sprintf("L%s",codes[i]));
@@ -410,4 +408,3 @@ void __fastcall TPlot::UpdatePoint(int x, int y)
     Message2->Caption=A2U(msg);
 }
 //---------------------------------------------------------------------------
-
diff --git a/app/rtkplot/plotmain.cpp b/app/rtkplot/plotmain.cpp
index c461749b7067bf5a903df229cab3be2e26babd92..c64515b4a7cd2b8e01e1bc1b13ca1a62d02df4d7 100644
--- a/app/rtkplot/plotmain.cpp
+++ b/app/rtkplot/plotmain.cpp
@@ -172,11 +172,11 @@ __fastcall TPlot::TPlot(TComponent* Owner) : TForm(Owner)
     
     FrqType->Items->Clear();
     FrqType->Items->Add("L1/LC");
-	if (nfreq>=2) FrqType->Items->Add("L2/E5b");
-	if (nfreq>=3) FrqType->Items->Add("L5");
-	if (nfreq>=4) FrqType->Items->Add("E6");
-	if (nfreq>=5) FrqType->Items->Add("E5ab");
-
+    if (nfreq>=2) FrqType->Items->Add("L2");
+    if (nfreq>=3) FrqType->Items->Add("L5");
+    if (nfreq>=4) FrqType->Items->Add("L6");
+    if (nfreq>=5) FrqType->Items->Add("L7");
+    if (nfreq>=6) FrqType->Items->Add("L8");
     FrqType->ItemIndex=0;
     
     TLEData.n=TLEData.nmax=0;
@@ -1002,7 +1002,7 @@ void __fastcall TPlot::MenuAnimStopClick(TObject *Sender)
 void __fastcall TPlot::MenuMaxClick(TObject *Sender)
 {
     TRect rect;
-	::SystemParametersInfo(SPI_GETWORKAREA,0,&rect,0);
+    ::SystemParametersInfo(SPI_GETWORKAREA,0,&rect,0);
 	Top=rect.Top;
 	Left=rect.Left;
 	Width=rect.Width();
@@ -1199,7 +1199,7 @@ void __fastcall TPlot::RangeListClick(TObject *Sender)
     RangeList->Visible=false;
     if ((i=RangeList->ItemIndex)<0) return;
     
-	strcpy(file,U2A(RangeList->Items->Strings[i]).c_str());
+    strcpy(file,U2A(RangeList->Items->Strings[i]).c_str());
     
     if (!sscanf(file,"%lf",&range)) return;
     
@@ -2504,7 +2504,7 @@ void __fastcall TPlot::SetRange(int all, double range)
         GraphT->SetScale(MAX(xs,ys),MAX(xs,ys));
         if (norm(OPos,3)>0.0) {
             ecef2pos(OPos,pos);
-			GoogleMapView->SetView(pos[0]*R2D,pos[1]*R2D,13);
+            GoogleMapView->SetView(pos[0]*R2D,pos[1]*R2D,13);
         }
     }
     if (PLOT_SOLP<=PlotType&&PlotType<=PLOT_SOLA) {
@@ -2517,7 +2517,7 @@ void __fastcall TPlot::SetRange(int all, double range)
         GraphG[0]->GetLim(tl,xp);
         xl[0]=yl[0]=zl[0]=0.0;
         xl[1]=MaxDop;
-		yl[1]=YLIM_AGE;
+        yl[1]=YLIM_AGE;
         zl[1]=YLIM_RATIO;
         GraphG[0]->SetLim(tl,xl);
         GraphG[1]->SetLim(tl,yl);
@@ -2642,7 +2642,7 @@ void __fastcall TPlot::FitRange(int all)
         if (lats[0]<=lats[1]&&lons[0]<=lons[1]) {
             lat=(lats[0]+lats[1])/2.0;
             lon=(lons[0]+lons[1])/2.0;
-		}
+        }
     }
 }
 // set center of track plot -------------------------------------------------
diff --git a/app/rtkplot/plotmain.dfm b/app/rtkplot/plotmain.dfm
index 6a7f2cb1198238b23851d968e89f7c7e7aa65936..a2bc218e7a1dcb363f18e0050a6fae4c1db3534e 100644
--- a/app/rtkplot/plotmain.dfm
+++ b/app/rtkplot/plotmain.dfm
@@ -35,7 +35,6 @@ object Plot: TPlot
     Color = clWhite
     ParentBackground = False
     TabOrder = 3
-    ExplicitWidth = 634
     object Disp: TPaintBox
       AlignWithMargins = True
       Left = 154
@@ -210,7 +209,6 @@ object Plot: TPlot
     Color = clWindow
     ParentBackground = False
     TabOrder = 0
-    ExplicitWidth = 634
     object BtnMessage2: TSpeedButton
       Left = 721
       Top = 0
@@ -242,7 +240,6 @@ object Plot: TPlot
       BorderWidth = 1
       TabOrder = 0
       Visible = False
-      ExplicitLeft = 440
       object Message2: TLabel
         Left = 2
         Top = 2
@@ -280,7 +277,6 @@ object Plot: TPlot
       Font.Style = []
       ParentFont = False
       TabOrder = 1
-      ExplicitWidth = 440
       object QL3: TLabel
         Left = 11
         Top = 2
@@ -382,7 +378,6 @@ object Plot: TPlot
     Color = clWindow
     ParentBackground = False
     TabOrder = 1
-    ExplicitWidth = 634
     object Panel11: TPanel
       Left = 537
       Top = 0
@@ -392,7 +387,6 @@ object Plot: TPlot
       BevelOuter = bvNone
       TabOrder = 0
       TabStop = True
-      ExplicitLeft = 434
       object BtnReload: TSpeedButton
         Left = 158
         Top = 0
@@ -1232,8 +1226,6 @@ object Plot: TPlot
           ParentFont = False
           TabOrder = 0
           OnChange = PlotTypeSChange
-          ExplicitLeft = 2
-          ExplicitWidth = 59
         end
       end
       object Panel102: TPanel
@@ -1586,7 +1578,6 @@ object Plot: TPlot
       Align = alLeft
       BevelOuter = bvNone
       TabOrder = 2
-      ExplicitLeft = 541
       object BtnAnimate: TSpeedButton
         Left = 2
         Top = 0
diff --git a/app/rtkplot/plotmain.h b/app/rtkplot/plotmain.h
index 7f33c2ff94a3e3f4f24640808e6afe5496edbbbc..99065742bb9483badad00dd303fb0aa4b937c79c 100644
--- a/app/rtkplot/plotmain.h
+++ b/app/rtkplot/plotmain.h
@@ -488,8 +488,6 @@ private:
     void __fastcall MouseMoveSol (int X, int Y, double dx, double dy, double dxs, double dys);
     void __fastcall MouseMoveObs (int X, int Y, double dx, double dy, double dxs, double dys);
 
-    int  __fastcall CheckObsTypeForMatch(const obsd_t *obs, int i);
-    int  __fastcall CheckObsType2ForMatch(const obsd_t *obs, int i);
     void __fastcall DrawTrk      (int level);
     void __fastcall DrawTrkImage (int level);
     void __fastcall DrawTrkMap   (int level);
diff --git a/app/rtkplot/rtkplot.cbproj b/app/rtkplot/rtkplot.cbproj
index 5e49f33305441c9708c1351ba279326ea7d94f6c..7d90ba93a0cb4168cb68e5570bf7b4d6125bbecb 100644
--- a/app/rtkplot/rtkplot.cbproj
+++ b/app/rtkplot/rtkplot.cbproj
@@ -6,7 +6,7 @@
         <Base>True</Base>
         <Config Condition="'$(Config)'==''">Release</Config>
         <FrameworkType>VCL</FrameworkType>
-        <ProjectVersion>18.5</ProjectVersion>
+        <ProjectVersion>18.7</ProjectVersion>
         <Platform Condition="'$(Platform)'==''">Win32</Platform>
         <TargetedPlatforms>1</TargetedPlatforms>
         <AppType>Application</AppType>
@@ -19,6 +19,11 @@
         <CfgParent>Base</CfgParent>
         <Base>true</Base>
     </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
+        <Base_Win64>true</Base_Win64>
+        <CfgParent>Base</CfgParent>
+        <Base>true</Base>
+    </PropertyGroup>
     <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
         <Cfg_1>true</Cfg_1>
         <CfgParent>Base</CfgParent>
@@ -30,6 +35,12 @@
         <Cfg_1>true</Cfg_1>
         <Base>true</Base>
     </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win64)'!=''">
+        <Cfg_1_Win64>true</Cfg_1_Win64>
+        <CfgParent>Cfg_1</CfgParent>
+        <Cfg_1>true</Cfg_1>
+        <Base>true</Base>
+    </PropertyGroup>
     <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
         <Cfg_2>true</Cfg_2>
         <CfgParent>Base</CfgParent>
@@ -82,9 +93,9 @@
     <PropertyGroup Condition="'$(Base_Win32)'!=''">
         <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
         <OutputExt>exe</OutputExt>
-        <TASM_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAGAL;ENAQZS;NFREQ=4;NEXOBS=3;$(TASM_Defines)</TASM_Defines>
-        <BCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAGAL;ENAQZS;ENACMP;ENAIRN;NFREQ=4;NEXOBS=3;$(BCC_Defines)</BCC_Defines>
-        <BRCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAGAL;ENAQZS;NFREQ=4;NEXOBS=3;$(BRCC_Defines)</BRCC_Defines>
+        <TASM_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAGAL;ENAQZS;NFREQ=3;$(TASM_Defines)</TASM_Defines>
+        <BCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAGAL;ENAQZS;ENACMP;ENAIRN;NEXOBS=3;NFREQ=3;$(BCC_Defines)</BCC_Defines>
+        <BRCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAGAL;ENAQZS;NFREQ=3;$(BRCC_Defines)</BRCC_Defines>
         <BCC_UserSuppliedOptions> -tWM</BCC_UserSuppliedOptions>
         <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
         <IncludePath>$(BDSINCLUDE)\windows\vcl;$(IncludePath)</IncludePath>
@@ -94,6 +105,13 @@
         <UWP_CppLogo44>$(BDS)\bin\Artwork\Windows\UWP\cppreg_UwpDefault_44.png</UWP_CppLogo44>
         <UWP_CppLogo150>$(BDS)\bin\Artwork\Windows\UWP\cppreg_UwpDefault_150.png</UWP_CppLogo150>
     </PropertyGroup>
+    <PropertyGroup Condition="'$(Base_Win64)'!=''">
+        <BCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAGAL;ENAQZS;ENACMP;NEXOBS=3;NFREQ=3;$(BCC_Defines)</BCC_Defines>
+        <TASM_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAGAL;ENAQZS;NFREQ=3;$(TASM_Defines)</TASM_Defines>
+        <BRCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAGAL;ENAQZS;NFREQ=3;$(BRCC_Defines)</BRCC_Defines>
+        <UWP_CppLogo44>$(BDS)\bin\Artwork\Windows\UWP\cppreg_UwpDefault_44.png</UWP_CppLogo44>
+        <UWP_CppLogo150>$(BDS)\bin\Artwork\Windows\UWP\cppreg_UwpDefault_150.png</UWP_CppLogo150>
+    </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_1)'!=''">
         <DCC_AdditionalSwitches> -V</DCC_AdditionalSwitches>
         <DCC_Define>DEBUG;$(DCC_Define);$(DCC_Define)</DCC_Define>
@@ -121,6 +139,9 @@
         <VerInfo_Locale>1033</VerInfo_Locale>
         <BCC_wpar>false</BCC_wpar>
     </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
+        <BCC_Defines>_DEBUG;$(BCC_Defines);$(BCC_Defines)</BCC_Defines>
+    </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_2)'!=''">
         <DCC_AdditionalSwitches> -$O+</DCC_AdditionalSwitches>
         <IntermediateOutputDir>Release_Build</IntermediateOutputDir>
@@ -433,13 +454,13 @@
         <FormResources Include="..\appcmn\fileoptdlg.dfm"/>
         <FormResources Include="conndlg.dfm"/>
         <FormResources Include="pntdlg.dfm"/>
-        <FormResources Include="plotopt.dfm"/>
+        <FormResources Include="satdlg.dfm"/>
         <FormResources Include="vmapdlg.dfm"/>
         <FormResources Include="skydlg.dfm"/>
-        <FormResources Include="satdlg.dfm"/>
-        <FormResources Include="plotmain.dfm"/>
+        <FormResources Include="plotopt.dfm"/>
         <FormResources Include="mapdlg.dfm"/>
         <FormResources Include="gmview.dfm"/>
+        <FormResources Include="plotmain.dfm"/>
         <BuildConfiguration Include="Release">
             <Key>Cfg_2</Key>
             <CfgParent>Base</CfgParent>
@@ -521,6 +542,7 @@
             </CPlusPlusBuilder.Personality>
             <Platforms>
                 <Platform value="Win32">True</Platform>
+                <Platform value="Win64">False</Platform>
             </Platforms>
             <Deployment Version="3">
                 <DeployFile Condition="'$(DynamicRTL)'=='true' And '$(Multithreaded)'!='true'" LocalName="$(BDS)\bin\cc32c260.dll" Class="DependencyModule">
@@ -563,13 +585,13 @@
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-                <DeployFile LocalName="..\..\src\rtkcmn.c" Configuration="Release" Class="ProjectFile">
+                <DeployFile LocalName="..\..\src\rcv\skytraq.c" Configuration="Release" Class="ProjectFile">
                     <Platform Name="Win32">
                         <RemoteDir>.\</RemoteDir>
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-                <DeployFile LocalName="..\..\src\rcv\skytraq.c" Configuration="Release" Class="ProjectFile">
+                <DeployFile LocalName="..\..\src\rtkcmn.c" Configuration="Release" Class="ProjectFile">
                     <Platform Name="Win32">
                         <RemoteDir>.\</RemoteDir>
                         <Overwrite>true</Overwrite>
@@ -883,6 +905,12 @@
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
+                <DeployClass Name="Android_Colors">
+                    <Platform Name="Android">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
                 <DeployClass Name="Android_DefaultAppIcon">
                     <Platform Name="Android">
                         <RemoteDir>res\drawable</RemoteDir>
@@ -919,6 +947,36 @@
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
+                <DeployClass Name="Android_NotificationIcon24">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-mdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon36">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-hdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon48">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-xhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon72">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-xxhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon96">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-xxxhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
                 <DeployClass Name="Android_SplashImage426">
                     <Platform Name="Android">
                         <RemoteDir>res\drawable-small</RemoteDir>
@@ -943,6 +1001,12 @@
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
+                <DeployClass Name="Android_Strings">
+                    <Platform Name="Android">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
                 <DeployClass Name="DebugSymbols">
                     <Platform Name="iOSSimulator">
                         <Operation>1</Operation>
@@ -1062,6 +1126,17 @@
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
+                <DeployClass Name="iPad_Launch1024x768">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
                 <DeployClass Name="iPad_Launch1536">
                     <Platform Name="iOSDevice32">
                         <Operation>1</Operation>
@@ -1073,6 +1148,39 @@
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
+                <DeployClass Name="iPad_Launch1536x2048">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_Launch1668">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_Launch1668x2388">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
                 <DeployClass Name="iPad_Launch2048">
                     <Platform Name="iOSDevice32">
                         <Operation>1</Operation>
@@ -1084,6 +1192,61 @@
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
+                <DeployClass Name="iPad_Launch2048x1536">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_Launch2048x2732">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_Launch2224">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_Launch2388x1668">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_Launch2732x2048">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
                 <DeployClass Name="iPad_Launch768">
                     <Platform Name="iOSDevice32">
                         <Operation>1</Operation>
@@ -1095,6 +1258,116 @@
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
+                <DeployClass Name="iPad_Launch768x1024">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Launch1125">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Launch1136x640">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Launch1242">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Launch1242x2688">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Launch1334">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Launch1792">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Launch2208">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Launch2436">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Launch2688x1242">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
                 <DeployClass Name="iPhone_Launch320">
                     <Platform Name="iOSDevice32">
                         <Operation>1</Operation>
@@ -1128,6 +1401,28 @@
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
+                <DeployClass Name="iPhone_Launch750">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Launch828">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
                 <DeployClass Name="ProjectAndroidManifest">
                     <Platform Name="Android">
                         <Operation>1</Operation>
diff --git a/src/rcv/binex.c b/src/rcv/binex.c
index afd9bff1dabe6f11dbc8791e90fee0600e6b7a7c..d29924ceaf77370704dd3dee73dd0d675fe75377 100644
--- a/src/rcv/binex.c
+++ b/src/rcv/binex.c
@@ -975,7 +975,7 @@ static unsigned char *decode_bnx_7f_05_obs(raw_t *raw, unsigned char *buff,
     
     /* get code priority */
     for (i=0;i<nobs;i++) {
-        code2obs(sys,codes[code[i]&0x3F],freq+i);
+        code2obs(codes[code[i]&0x3F],freq+i);
         pri[i]=getcodepri(sys,codes[code[i]&0x3F],raw->opt);
         
         /* frequency index for beidou */
diff --git a/src/rinex.c b/src/rinex.c
index acefce571c499ad00cb4d31ac790b20c48e75d1a..5bfb470b05c3f8079ee44dbf72f2c8516ea9ff7e 100644
--- a/src/rinex.c
+++ b/src/rinex.c
@@ -879,7 +879,7 @@ static void set_index(double ver, int sys, const char *opt,
     int i,j,k,n;
     
     for (i=n=0;*tobs[i];i++,n++) {
-        ind->code[i]=obs2code(sys,tobs[i]+1,ind->frq+i);
+        ind->code[i]=obs2code(tobs[i]+1,ind->frq+i);
         ind->type[i]=(p=strchr(obscodes,tobs[i][0]))?(int)(p-obscodes):0;
         ind->pri[i]=getcodepri(sys,ind->code[i],opt);
         ind->pos[i]=-1;
@@ -903,7 +903,7 @@ static void set_index(double ver, int sys, const char *opt,
     for (p=opt;p&&(p=strchr(p,'-'));p++) {
         if (sscanf(p,optstr,str,&shift)<2) continue;
         for (i=0;i<n;i++) {
-            if (strcmp(code2obs(0,ind->code[i],NULL),str)) continue;
+            if (strcmp(code2obs(ind->code[i],NULL),str)) continue;
             ind->shift[i]=shift;
             trace(2,"phase shift: sys=%2d tobs=%s shift=%.3f\n",sys,
                   tobs[i],shift);
@@ -2078,12 +2078,12 @@ static int obsindex(double ver, int sys, const unsigned char *code,
                     return i;
             }
             else {
-                id=code2obs(0,code[i],NULL);
+				id=code2obs(code[i],NULL);
                 if (id[0]==tobs[1]) return i;
             }
         }
         else { /* ver.3 */
-            id=code2obs(0,code[i],NULL);
+			id=code2obs(code[i],NULL);
             if (!strcmp(id,tobs+1)) return i;
         }
     }
diff --git a/src/rtcm3.c b/src/rtcm3.c
index 195f0bc2ef0c855e6e84d329b541e0abc43cc1b5..ac06c50664b966c4183edbe23ad12cc98bf68ce4 100644
--- a/src/rtcm3.c
+++ b/src/rtcm3.c
@@ -1822,8 +1822,8 @@ static void save_msm_obs(rtcm_t *rtcm, int sys, msm_h_t *h, const double *r,
             default: sig[i]=""; break;
         }
         /* signal to rinex obs type */
-        code[i]=obs2code(sys,sig[i],freq+i);
-
+        code[i]=obs2code(sig[i],freq+i);
+        
         /* freqency index for beidou and galileo */
         if (sys==SYS_CMP) {
             if      (freq[i]==5) freq[i]=2; /* B2 */
diff --git a/src/rtcm3e.c b/src/rtcm3e.c
index ccedcdefa930bf67e146c88e3319cdd16ade9d52..7b03933748782279a2757c79303a9e3809b67cce 100644
--- a/src/rtcm3e.c
+++ b/src/rtcm3e.c
@@ -1761,7 +1761,7 @@ static int to_sigid(int sys, unsigned char code, int *freq)
         else if (code==CODE_L2M) code=CODE_L2P;
         else if (code==CODE_L2N) code=CODE_L2P;
     }
-    if (!*(sig=code2obs(sys,code,freq))) return 0;
+    if (!*(sig=code2obs(code,freq))) return 0;
     
     switch (sys) {
         case SYS_GPS: msm_sig=msm_sig_gps; break;
diff --git a/src/rtkcmn.c b/src/rtkcmn.c
index 5af0b14fdd9940862d4ed4c51f136af31d211fa1..c8ee183481b05d5a67f731f75d8e164bdf0c51d1 100644
--- a/src/rtkcmn.c
+++ b/src/rtkcmn.c
@@ -251,34 +251,23 @@ static char *obscodes[]={       /* observation code strings */
     "5B","5C","9A","9B","9C", "9X",""  ,""  ,""  ,""    /* 50-59 */
 };
 static unsigned char obsfreqs[]={
-    /* 1:L1/E1, 2:L2/E5b, 3:L5/E5a/L3, 4:E6/LEX, 5:E5(a+b), 6:S */
+    /* 1:L1/E1/B1, 2:L2/E5b/B2, 3:L5/E5a, 4:E6/LEX/B3, 5:E5(a+b), 6:S */
     0, 1, 1, 1, 1,  1, 1, 1, 1, 1, /*  0- 9 */
     1, 1, 1, 1, 2,  2, 2, 2, 2, 2, /* 10-19 */
     2, 2, 2, 2, 3,  3, 3, 2, 2, 2, /* 20-29 */
-    5, 5, 5, 5, 5,  5, 5, 6, 6, 6, /* 30-39 */
-    1, 1, 3, 3, 4,  4, 4, 1, 1, 4, /* 40-49 */
-    4, 4, 7, 7, 7,  7, 0, 0, 0, 0  /* 50-59 */
+    4, 4, 4, 4, 4,  4, 4, 5, 5, 5, /* 30-39 */
+    1, 1, 3, 3, 3,  3, 3, 1, 1, 3, /* 40-49 */
+    3, 3, 6, 6, 6,  6, 0, 0, 0, 0  /* 50-59 */
 };
-
-static unsigned char obsfreqs_cmp[]={
-    /* 1:B1, 2:B2, 3:B3 */
-    0, 1, 1, 1, 1,  1, 1, 1, 1, 1, /*  0- 9 */
-    1, 1, 1, 1, 2,  2, 2, 2, 1, 2, /* 10-19 */
-    2, 2, 2, 2, 4,  4, 4, 2, 2, 2, /* 20-29 */
-    5, 5, 5, 3, 5,  5, 5, 6, 6, 6, /* 30-39 */
-    1, 1, 3, 3, 4,  4, 4, 1, 1, 4, /* 40-49 */
-    4, 4, 7, 7, 7,  7, 0, 0, 0, 0  /* 50-59 */
-};
-
 static char codepris[7][MAXFREQ][16]={  /* code priority table */
 
-   /* L1/E1/B1   L2/B2      E5b/B3  L5/E5a/L3 E6/LEX     E5(a+b)  S */
-	{"CPYWMNSL","CLPYWMNDSX","IQX"   ,""        ,""      ,""    }, /* GPS */
-	{"PC"      ,"PC"        ,"IQX"   ,""        ,""      ,""    }, /* GLO */
-	{"CABXZ"   ,""          ,"IQX"   ,"ABCXZ"   ,"IQX"   ,""    }, /* GAL */
-	{"CSLXZ"   ,"SLX"       ,"IQX"   ,"SLX"     ,""      ,""    }, /* QZS */
-	{"C"       ,""          ,"IQX"   ,""        ,""      ,""    }, /* SBS */
-	{"IQX"     ,"IQX"       ,"IQX"   ,"IQX"     ,""      ,""    }, /* BDS */
+   /* L1/E1/B1   L2/E5b/B2      E5b/B3  L5/E5a/L3 E6/LEX     E5(a+b)  S */
+    {"CPYWMNSL","CLPYWMNDSX","IQX"   ,""        ,""      ,""    }, /* GPS */
+    {"PC"      ,"PC"        ,"IQX"   ,""        ,""      ,""    }, /* GLO */
+    {"CABXZ"   ,"IQX"       ,"IQX"   ,"ABCXZ"   ,"IQX"   ,""    }, /* GAL */
+    {"CSLXZ"   ,"SLX"       ,"IQX"   ,"SLX"     ,""      ,""    }, /* QZS */
+    {"C"       ,""          ,"IQX"   ,""        ,""      ,""    }, /* SBS */
+    {"IQX"     ,"IQX"       ,"IQX"   ,"IQX"     ,""      ,""    }, /* BDS */
     {""        ,""          ,"ABCX"  ,""        ,""      ,"ABCX"}  /* IRN */
 };
 static fatalfunc_t *fatalfunc=NULL; /* fatal callback function */
@@ -596,19 +585,13 @@ extern int testsnr(int base, int freq, double el, double snr,
 * return : obs code (CODE_???)
 * notes  : obs codes are based on reference [6] and qzss extension
 *-----------------------------------------------------------------------------*/
-extern unsigned char obs2code(int sys, const char *obs, int *freq)
+extern unsigned char obs2code(const char *obs, int *freq)
 {
     int i;
     if (freq) *freq=0;
     for (i=1;*obscodes[i];i++) {
         if (strcmp(obscodes[i],obs)) continue;
-        
-    if (freq) {
-       if (sys==SYS_CMP)
-           *freq=obsfreqs_cmp[i];
-       else
-           *freq=obsfreqs[i];
-    }
+        if (freq) *freq=obsfreqs[i];
         return (unsigned char)i;
     }
     return CODE_NONE;
@@ -622,16 +605,11 @@ extern unsigned char obs2code(int sys, const char *obs, int *freq)
 * return : obs code string ("1C","1P","1P",...)
 * notes  : obs codes are based on reference [6] and qzss extension
 *-----------------------------------------------------------------------------*/
-extern char *code2obs(int sys, unsigned char code, int *freq)
+extern char *code2obs(unsigned char code, int *freq)
 {
     if (freq) *freq=0;
     if (code<=CODE_NONE||MAXCODE<code) return "";
-    if (freq) {
-       if (sys==SYS_CMP)
-           *freq=obsfreqs_cmp[code];
-       else
-           *freq=obsfreqs[code];
-    }
+    if (freq) *freq=obsfreqs[code];
     return obscodes[code];
 }
 /* set code priority -----------------------------------------------------------
@@ -647,7 +625,7 @@ extern void setcodepri(int sys, int freq, const char *pri)
     trace(3,"setcodepri:sys=%d freq=%d pri=%s\n",sys,freq,pri);
     
     if (freq<=0||MAXFREQ<freq) return;
-	if (sys&SYS_GPS) strcpy(codepris[0][freq-1],pri);
+    if (sys&SYS_GPS) strcpy(codepris[0][freq-1],pri);
     if (sys&SYS_GLO) strcpy(codepris[1][freq-1],pri);
     if (sys&SYS_GAL) strcpy(codepris[2][freq-1],pri);
     if (sys&SYS_QZS) strcpy(codepris[3][freq-1],pri);
@@ -678,7 +656,7 @@ extern int getcodepri(int sys, unsigned char code, const char *opt)
         case SYS_IRN: i=6; optstr="-IL%2s"; break;
         default: return 0;
     }
-    obs=code2obs(sys,code,&j);
+    obs=code2obs(code,&j);
     
     /* parse code options */
     for (p=opt;p&&(p=strchr(p,'-'));p++) {
diff --git a/src/rtklib.h b/src/rtklib.h
index f8cc401e4f6c21fb1606f45a991f2779d439b5fc..4193fa18c5231547d709dfa01e88c50af9407d53 100644
--- a/src/rtklib.h
+++ b/src/rtklib.h
@@ -1454,8 +1454,8 @@ EXPORT int  satno   (int sys, int prn);
 EXPORT int  satsys  (int sat, int *prn);
 EXPORT int  satid2no(const char *id);
 EXPORT void satno2id(int sat, char *id);
-EXPORT unsigned char obs2code(int sys, const char *obs, int *freq);
-EXPORT char *code2obs(int sys, unsigned char code, int *freq);
+EXPORT unsigned char obs2code(const char *obs, int *freq);
+EXPORT char *code2obs(unsigned char code, int *freq);
 EXPORT int  satexclude(int sat, double var, int svh, const prcopt_t *opt);
 EXPORT int  testsnr(int base, int freq, double el, double snr,
                     const snrmask_t *mask);