Mos CPP
Mos CPP
h>
char M[100][4],IR[4],R[4],C;
int IC;
int B,E,SI,READf;
void TERMINATE();
void INIT()
int i,j;
B = 0;
E = B + 10;
READf = 0;
int i,j,k;
char ch,arr1[20];
if (READf == 0)
k = loc-1;
E = loc+10;
ch = fgetc(fp1);
while (1)
i = 0;
arr1[i] = ch;
i++;
ch = fgetc(fp1);
arr1[i] = '\0';
if (strcmp(arr1,"$END")==0)
ch = fgetc(fp1);
break;
}
else
if (ch == '\n')
k++;
i=0;
while (i < 4)
M[k][i] = arr1[i];
i++;
k = E-1;
E = E+10;
else
k++;
i=0;
while (i < 4)
M[k][i] = arr1[i];
i++;
}
if (ch == '\n')
ch = fgetc(fp1);
READf = 1;
void WRITE()
int i,j,k,loc,x;
char ch2;
IR[3] = 0;
x = atoi(&IR[2]);
loc = x * 10;
i = loc;
if (M[i][k] != '\0')
fputc(M[i][k], fp2);
ch2 = M[i][k];
else
break;
i++;
if (ch2 != '\n')
fputc('\n',fp2);
switch (SI)
case 1:
READ(loc);
SI=0;
break;
case 2:
WRITE();
SI = 0;
break;
case 3:
TERMINATE();
SI = 0;
break;
default:
break;
void EXECUTEPROGRAM()
int k,i,j,loc,x,y;
while (IC<B)
IR[k] = M[IC][k];
x = atoi(&IR[2]);
loc = x;
R[i] = '\0';
R[j] = M[loc][j];
else
break;
M[loc][j] = R[j];
if (R[i] == M[loc][i])
C = 't';
}
else
C = 'f';
break;
if (E == 't')
IC = loc;
IC--;
SI = 1;
MOS(loc);
SI = 2;
MOS(loc);
}
SI = 3;
MOS(loc);
IC++;
void STARTEXECUTION()
IC = 0;
EXECUTEPROGRAM();
void LOAD()
int i,j,k;
// ch = fgetc(fp1);
// int ch = fgetc(fp1);
INIT();//INIT function is called that is made ABOVE
do
i = 0;
temp[i] = ch;
ch = fgetc(fp1);
ch = ch;
i++;
temp[i] = '\0';
//cout<<temp;
if((strcmp(temp,"$AMJ"))==0)
ch = getc(fp1);
else if ((strcmp(temp,"$DTA"))==0)
{
STARTEXECUTION();
else if ((strcmp(temp,"$DTA"))!=0)
i=0;
if (B == E)
{E = E+10;}
M[B][k] = temp[i];
i++;
B++;
if ((char)ch == '\n')
ch = fgetc(fp1);
void TERMINATE()
{
fputc('\n', fp2);
fputc('\n', fp2);
LOAD();
int main()
int i,j;
fp1 = fopen("inputMOS.txt","r");
fp2 = fopen("OUTPUTMOS.txt","w");
if (fp1 == NULL)
else
LOAD();
return 0 ;
}#include<bits/stdc++.h>
int IC;
int B,E,SI,READf;
void TERMINATE();
void INIT()
int i,j;
B = 0;
E = B + 10;
READf = 0;
{
int i,j,k;
char ch,arr1[20];
if (READf == 0)
k = loc-1;
E = loc+10;
ch = fgetc(fp1);
while (1)
i = 0;
arr1[i] = ch;
i++;
ch = fgetc(fp1);
arr1[i] = '\0';
if (strcmp(arr1,"$END")==0)
ch = fgetc(fp1);
break;
else
{
if (ch == '\n')
k++;
i=0;
while (i < 4)
M[k][i] = arr1[i];
i++;
k = E-1;
E = E+10;
else
k++;
i=0;
while (i < 4)
M[k][i] = arr1[i];
i++;
if (ch == '\n')
ch = fgetc(fp1);
}
READf = 1;
void WRITE()
int i,j,k,loc,x;
char ch2;
IR[3] = 0;
x = atoi(&IR[2]);
loc = x * 10;
i = loc;
if (M[i][k] != '\0')
fputc(M[i][k], fp2);
ch2 = M[i][k];
}
else
break;
i++;
if (ch2 != '\n')
fputc('\n',fp2);
switch (SI)
case 1:
READ(loc);
SI=0;
break;
case 2:
WRITE();
SI = 0;
break;
case 3:
TERMINATE();
SI = 0;
break;
default:
break;
void EXECUTEPROGRAM()
int k,i,j,loc,x,y;
while (IC<B)
IR[k] = M[IC][k];
x = atoi(&IR[2]);
loc = x;
R[i] = '\0';
R[j] = M[loc][j];
else
break;
M[loc][j] = R[j];
if (R[i] == M[loc][i])
C = 't';
else
{
C = 'f';
break;
if (E == 't')
IC = loc;
IC--;
SI = 1;
MOS(loc);
SI = 2;
MOS(loc);
SI = 3;
MOS(loc);
IC++;
void STARTEXECUTION()
IC = 0;
EXECUTEPROGRAM();
void LOAD()
int i,j,k;
// ch = fgetc(fp1);
// int ch = fgetc(fp1);
i = 0;
temp[i] = ch;
ch = fgetc(fp1);
ch = ch;
i++;
temp[i] = '\0';
//cout<<temp;
if((strcmp(temp,"$AMJ"))==0)
ch = getc(fp1);
else if ((strcmp(temp,"$DTA"))==0)
STARTEXECUTION();
}
else if ((strcmp(temp,"$DTA"))!=0)
i=0;
if (B == E)
{E = E+10;}
M[B][k] = temp[i];
i++;
B++;
if ((char)ch == '\n')
ch = fgetc(fp1);
void TERMINATE()
{
fputc('\n', fp2);
fputc('\n', fp2);
LOAD();
int main()
int i,j;
fp1 = fopen("inputMOS.txt","r");
fp2 = fopen("OUTPUTMOS.txt","w");
if (fp1 == NULL)
else
LOAD();
return 0 ;