protected void handleDisassemble(String[] tokens)
	{
		int start;
		int num_instructions = 8;

		if(tokens.length > 2)
		{
			try
			{
				num_instructions = parseInt(tokens[2]);
			}
			catch(NumberFormatException e)
			{
				writer.println("Invalid instruction count: " + tokens[2]);
				return;
			}
		}

		if(tokens.length > 1)
		{
			String address = tokens[1];
			try
			{
				start = parseInt(address);
			}
			catch(NumberFormatException e)
			{
				writer.println("Unknown address [" + address + "]");
				return;
			}
		}
		else
		{
			start = cpu.getPC();
		}

		int count = 0;
		StringBuilder buffer = new StringBuilder(80);

		while(start < memory.size() && count < num_instructions)
		{
			buffer.delete(0, buffer.length());
			int opcode = cpu.readMemoryWord(start);

			Instruction i = cpu.getInstructionFor(opcode);
			DisassembledInstruction di = i.disassemble(start, opcode);
			if(showBytes)
			{
				di.formatInstruction(buffer);
			}
			else
			{
				di.shortFormat(buffer);
			}
			writer.println(buffer.toString());
			start += di.size();
			count++;
		}
	}