public void drawPanel1() {
		
		panel1 = new JPanel();
		panel1.setLayout(new BoxLayout(panel1, BoxLayout.Y_AXIS));
		panel1.setBorder(BorderFactory.createEmptyBorder(10, 5, 10, 5));
		panel1.setMinimumSize(new Dimension(340, 800));


		/*
		 * Assembler display in panel 1
		 */
		JPanel assemblerBufferPanel = new JPanel(); //To make border equal to controlPanel above
		JPanel assemblerContentPanel = new JPanel();
		
		if (!pipeliningEnabled) {
			assemblyProgramArea = new JTextArea(20, 32);
		}
		else { //Slightly smaller assembly program area for pipelined mode as more content must fit in window
			assemblyProgramArea = new JTextArea(17, 32); 
		}
		
		assemblyProgramArea.setEditable(false);
		assemblyProgramArea.setCaretPosition(0);
		
		JScrollPane assemblerScroller = new JScrollPane(assemblyProgramArea);		
		assemblerBufferPanel.add(assemblerScroller);		
		assemblerContentPanel.add(assemblerBufferPanel);
		
		JPanel assemblerPanel = new JPanel();		
		assemblerPanel.add(assemblerContentPanel);			
		assemblerContentPanel.setBorder(BorderFactory.createTitledBorder(" Assembly Program "));
		
		panel1.add(assemblerPanel);		
	
		
		/*
		 * Activity Monitor display in panel1
		 */
		JPanel activityBufferPanel = new JPanel(); //To make border equal to controlPanel and assembly above
		JPanel activityContentPanel = new JPanel();
		
		if (!pipeliningEnabled) { //One large activity monitor in standard mode
			activityArea = new JTextArea(18, 32);
			activityArea.setEditable(false);
			JScrollPane activityScroller = new JScrollPane(activityArea);
			
			activityBufferPanel.add(activityScroller);			
			activityContentPanel.add(activityBufferPanel);
			
			JPanel activityPanel = new JPanel();
			activityPanel.add(activityContentPanel);			
			
			activityContentPanel.setBorder(BorderFactory.createTitledBorder(" Activity Monitor "));
			
			panel1.add(activityPanel);
		
		}
		
		else { //Pipelining enabled, create three smaller activity monitors specific to each stage
			
			JPanel activityBufferPanel1 = new JPanel();
			JPanel activityBufferPanel2 = new JPanel();
			
			activityContentPanel.setLayout(new BoxLayout(activityContentPanel, BoxLayout.Y_AXIS));
			
			//Activity area for fetch/decode stage
			activityArea = new JTextArea(7, 32);
			activityArea.setEditable(false);		
			JScrollPane activityScroller = new JScrollPane(activityArea);
			
			//Activity area for execute stage
			activityArea1 = new JTextArea(7, 32);
			activityArea1.setEditable(false);
			JScrollPane activityScroller1 = new JScrollPane(activityArea1);
			
			//Activity area for writeBackStage stage
			activityArea2 = new JTextArea(3, 32);
			activityArea2.setEditable(false);
			JScrollPane activityScroller2 = new JScrollPane(activityArea2);			
			
			
			activityBufferPanel.add(activityScroller);
			activityBufferPanel1.add(activityScroller1);
			activityBufferPanel2.add(activityScroller2);
			
			activityBufferPanel.setBorder(BorderFactory.createTitledBorder(" Fetch/Decode Stage Activity "));
			activityBufferPanel1.setBorder(BorderFactory.createTitledBorder(" Execute Stage Activity "));
			activityBufferPanel2.setBorder(BorderFactory.createTitledBorder(" Write Back Stage Activity "));
			
			activityContentPanel.add(activityBufferPanel);
			activityContentPanel.add(activityBufferPanel1);
			activityContentPanel.add(activityBufferPanel2);
			
			JPanel activityPanel = new JPanel();
			activityPanel.add(activityContentPanel);
			
			panel1.add(activityPanel);
			
		}
		
		controlUnit.getFetchDecodeStage().registerListener(new UpdateListener(this)); //Register a listener with FD stage
		controlUnit.getExecuteStage().registerListener(new UpdateListener(this)); //Register a listener with Ex. stage
		controlUnit.getWriteBackStage().registerListener(new UpdateListener(this)); //Register a listener with WB stage		
		
		
		this.getContentPane().add(panel1);		
	}