You are on page 1of 12

Phase 1

Experiment Number: 04

TITLE: Design and Implementation of a multiprogramming OS: Stage 1


i. CPU/Machine Simulation
ii. Supervisor call through Interrupt

NAME: Pankaj Gopalani ROLLNO:85

CLASS: SY-IT BRANCH: IT BATCH: 4

DATE OF PERFORMANCE:12th March 2019

Source Code:

import java.io.*;

public class phase1


{
public static void main(String[] args) throws IOException
{
start s=new start();
s.LOAD();
}
}

class start
{
char M[][]=new char[100][4];
char IR[]=new char[4];
char R[]=new char[4];
static int IC=0;
int SI;
boolean C;

public void INIT()


{
for(int i=0;i<100;i++)
{
for(int j=0;j<4;j++)
{
M[i][j]=' ';
}
}
for(int j=0;j<4;j++)
{
IR[j] = ' ';
}
}

public void LOAD() throws FileNotFoundException, IOException


{
FileReader fr=new FileReader("G:\\OS\\input_Phase1.txt");
BufferedReader br=new BufferedReader(fr);
String ch;
for(int i=0;i<100;i++)
{
for(int j=0;j<4;j++)
{
M[i][j] = ' ';
}
}
while((ch=br.readLine())!=null)
{
String l1;
l1=ch.substring(0,4);
if(l1.equals("$AMJ"))
{
String l2;
int length,i,j,linecount;
char c='A';
linecount=0;
while(true&&c!='H')
{
l2=br.readLine();
length=l2.length();
for(i=0;i<length;i++)
{
for(j=0;j<4;j++)
{
c=l2.charAt(i);
M[linecount][j]=c;
i++;
if(c=='H')
{
break;
}
}
if(c=='H')
{
break;
}
i--;
linecount++;
}
}
}
else if(l1.equals("$DTA"))
{
STARTEXECUTION(br);
}
else if (l1.equals("$END"))
{
INIT();
}
}
}

public void MOS(BufferedReader br,int operand) throws IOException


{
switch(SI)
{
case 1:
READ(br,operand);
break;
case 2:
WRITE(operand);
break;
case 3:
TERMINATE();
}
}

public void STARTEXECUTION(BufferedReader br) throws IOException


{
IC=0;
EXECUTEUSERPROGRAM(br);
}

public void EXECUTEUSERPROGRAM(BufferedReader br) throws IOException


{
int i,operand,temp=0;
for(i=0;i<4;i++)
{
IR[i]=M[IC][i];
}
IC++;
operand=Character.getNumericValue(IR[2])*10+Character.getNumericValue(IR[3]);
System.out.println(IR[0]);
switch(IR[0])
{
case 'L':
for(i=0;i<4;i++)
{
R[i]=M[operand][i];
}

for(i=0;i<4;i++)
{
System.out.println(R[i]);
}
EXECUTEUSERPROGRAM(br);
break;
case 'S':
for(i=0;i<4;i++)
{
M[operand][i]=R[i];
}
EXECUTEUSERPROGRAM(br);
break;
case 'C':
for(i=0;i<4;i++)
{
if(R[i]==M[operand][i])
{
temp++;
}
else
{
continue;
}
}
if(temp==4)
{
C=true;
}
else
{
C=false;
}
EXECUTEUSERPROGRAM(br);
break;
case 'B':
if(C)
{
IC=operand;
}
EXECUTEUSERPROGRAM(br);
break;
case 'G':
SI=1;
MOS(br,operand);
EXECUTEUSERPROGRAM(br);
break;
case 'P':
SI=2;
MOS(br,operand);
EXECUTEUSERPROGRAM(br);
break;
case 'H':
SI=3;
MOS(br,operand);
break;
}
}

public void READ(BufferedReader br, int operand) throws IOException


{
String l1;
int i,j=0;
l1=br.readLine();
int length=l1.length();
try
{
for(i=0;i<length;i++)
{
M[operand][j]=l1.charAt(i);
j++;
if(j%4==0)
{
operand++;
j=0;
}
}
M[operand][i]='\0';
if(length%4!=0)
{
operand++;
}
}
catch(Exception e)
{
System.out.println("Error..." +e);
}
}

public void WRITE(int operand) throws IOException


{
System.out.println("Writing to File");
File file=new File("G:\\OS\\output.txt");
FileWriter fr=new FileWriter(file, true);
BufferedWriter br1=new BufferedWriter(fr);
String temp;
temp=Character.toString(M[operand][0]);
int j;
for(int i=operand;i<operand+9;i++)
{
for(j=0;j<4;j++)
{
if(i==operand&&j==0)
{
continue;
}
System.out.println("I : " + i + " j: " + j + " M[i][j] : " + M[i][j] + " temp : " + temp);
temp=temp+Character.toString(M[i][j]);
if(M[i][j]=='\0')
{
break;
}
}
if(j<4&&M[i][j]=='\0')
{
break;
}
}
System.out.println(temp);
fr.append(temp);
br1.newLine();
br1.flush();
br1.close();
}
public void TERMINATE() throws IOException
{
File file=new File("G:\\OS\\output1.txt");
FileWriter fr=new FileWriter(file, true);
BufferedWriter br1=new BufferedWriter(fr);
br1.newLine();
br1.newLine();
br1.newLine();

br1.flush();
br1.close();
}
}
Input_Phase1.txt

$AMJ010200210001
GD30LR36SR40LR35SR41LR34SR42LR33SR43LR32
SR44LR31SR45LR30SR46LR39SR47SR38SR49PD40
H
$DTA
AMA PANANAL A CPLANN A A MA
$END0102
$AMJ020100120003
GD20LR20GD30CR33BT07GD40PD40PD20PD30GD40
PD40H
$DTA
HOPE FOR IT
THERE IS NO HOPE
BUT STILL HOPE
$END0201
$AMJ000300170007
GD20PD20GD30PD30GD40LR40SR20PD20PD30GD40
LR40SR20PD20PD30GD50PD50H
$DTA
3 LITTLE PIGS WENT TO OS CLASS.
THE WOLF ATE ONE!
2 LI
1 LI
CLASS DISMISSED!
$END0003
$AMJ020200160005
GD20PD20LR20SR30SR31PD30SR40SR41SR42PD40
SR50SR51PD50SR60PD60H
$DTA
*
$END0202
$AMJ000700200002
GD50LR50SR67LR51SR66LR52SR65LR53SR64LR54
SR63LR55SR62LR56SR61LR57SR60PD50PD60H
$DTA
N U T R A F I N
$END0007
$AMJ030100100003
GD20PD20GD30PD30LR20CR30BT10GD40PD40H
$DTA
VIT IS GOOD
VIIT IS GOOD
BOTH ARE SISTER INSTITUTES
$END0301
$AMJ030200080003
GD20PD20GD30PD30LR30SR20PD20H
$DTA
CAT CAN EAT RAT
RAT CAN NOT EAT CAT
$END0302
$AMJ010100040001
GD20LR22SR25PD20H
$DTA
I LIKE THIS PEN OF
$END0101
$AMJ040100120004
GD20PD20GD30PD30GD40GD50LR20CR30BT10PD40
PD50H
$DTA
ABCD
ABCD
DO NOT
MATCH
$END0401
$AMJ040200130004
GD20PD20GD30LR30SR20PD20GD40PD40GD50LR50
SR20PD20H
$DTA
RAT
S
ON
M
$END0402
$AMJ010200070002
GD20LR26CR20BT06GD30PD30PD20H
$DTA
RAM IS OLDER THAN SHRIRAM
NOT IN EXISTANCE
$END0102
$AMJ030200120004
GD20GD30GD40GD50PD20PD30LR20CR30BT10PD50
PD40H
$DTA
VIT
VIIT
SAME
NOT
$END0302
$AMJ030300140002
GD20LR24SR30LR23SR31LR22SR32LR21SR33LR20
SR34PD20PD30H
$DTA
H E L L O
$END0303

Output.txt:

A MAN A PLAN A CANAL PANAMA

HOPE FOR IT
THERE IS NO HOPE
BUT STILL HOPE

3 LITTLE PIGS WENT TO OS CLASS.


THE WOLF ATE ONE!
2 LITTLE PIGS WENT TO OS CLASS.
THE WOLF ATE ONE!
1 LITTLE PIGS WENT TO OS CLASS.
THE WOLF ATE ONE!
CLASS DISMISSED!

*
* *
* * *
* *
*
N U T R A F I N
N I F A R T U N

VIT IS GOOD
VIIT IS GOOD
BOTH ARE SISTER INSTITUTES

CAT CAN EAT RAT


RAT CAN NOT EAT CAT
RAT CAN EAT RAT

I LIKE THIS PEN OF HIS

ABCD
ABCD
MATCH

RAT
SAT
ON
MAT

RAM IS OLDER THAN SHRIRAM

VIT
VIIT
NOT
SAME
H E L L O
O L L E H

You might also like