if (((i - 0x200) & 0xffff) == 0xffff) startAt = i;
    public int findFreeRange(int startAt, int length) throws EOFException    {	    // simple recursive spacefinder function	    // finds the highest occurrence of a data-free block of size [length]	    // checks for normal expanded area data (i.e., 255 [00]s, one [02], and	    // so on)	    // if it finds an interrupt in the pattern, it will skip that area and	    // search just beyond it, thus leaving any user-modified data intact	    // (hopefully)		    int i;	    for (i = startAt; i > startAt - (length - 1); i--)	    {	        if (i < 0x300200)	            //only look at exp	            throw new EOFException("No free range " + length	                + " bytes long found.");	        if (i < 0x410200 && i >= 0x408200)	            startAt = i = 0x4081ff;	        int ch = rom.read(i);		        if (((i + 1) % 0x100) == 0 && i < 0x400200)	        {	            if (ch != 2)	            {	                //return findFreeRange(i - 1, length);	                startAt = i - 1;	            }	        }	        else	        {	            if (ch != 0)	            {	                //return findFreeRange(i - 1, length);	                startAt = i - 1;	            }	        }	    }	    //        System.out.println(	    //            "Free range found starting at 0x"	    //                + addZeros(Integer.toHexString(i), 6)	    //                + " "	    //                + length	    //                + " bytes long.");		    return i;	}