private int parseInstruction(String line, int i)
    {
        //retrieve the instruction code from the string
        String instr = getToken(line, i);

        //Check for empty token (syntax error)
        if (instr.length() == 0)
        {
            System.out.println("\nERROR (line " + m_lineNum + "): Empty token");
            return -1;
        }

        //Convert the code to its integer form
        Integer intInstr = instrToInt(instr);
        if (intInstr.intValue() < 0)
        {
            // error during instr parse
            System.out.println("\nERROR:  Unknown opcode (" + instr  + ") on line " + m_lineNum);
            return intInstr.intValue(); 
        }
        
        if (m_verbose) System.out.print("" + instr + "=" + intInstr);

        //Add the code to the program
        m_prog.add(intInstr);

        //Read the arguments of the instruction.  Fill in zero values so that
        //all instructions are exactly CPU.INSTRSIZE ints
        for(int j = 0; j < CPU.INSTRSIZE - 1; j++)
        {
            i = skipToken(line, i);
            int err = parseArg(line, i);
            if (err != 0) return err;
        }//for

        return 0;
    }//parseInstruction