public AltosRomconfig romconfig() throws InterruptedException {
try {
- byte[] bytes = read_memory(0xa0, 10);
- AltosHexfile hexfile = new AltosHexfile (bytes, 0xa0);
+ byte[] bytes = read_memory(0x00, 0x200);
+ AltosHexfile hexfile = new AltosHexfile (bytes, 0x00);
return new AltosRomconfig(hexfile);
} catch (IOException ie) {
}
if (usb_descriptors == null)
return -1;
- /* Walk the descriptors looking for the device */
- a = usb_descriptors.address;
- while (get_u8(a+1) != AO_USB_DESC_DEVICE) {
- int delta = get_u8(a);
- a += delta;
- if (delta == 0 || a >= max_address)
- return -1;
+ try {
+ /* Walk the descriptors looking for the device */
+ a = usb_descriptors.address;
+ while (get_u8(a+1) != AO_USB_DESC_DEVICE) {
+ int delta = get_u8(a);
+ a += delta;
+ if (delta == 0 || a >= max_address)
+ return -1;
+ }
+ return a;
+ } catch (ArrayIndexOutOfBoundsException ae) {
+ return -1;
}
- return a;
}
public AltosUsbId find_usb_id() {
System.out.printf("no symbol %s\n", name);
throw new AltosNoSymbol(name);
}
- if (hexfile.address <= symbol.address && symbol.address + len < hexfile.max_address) {
+ if (hexfile.address <= symbol.address && symbol.address + len <= hexfile.max_address) {
System.out.printf("%s: %x\n", name, symbol.address);
return symbol.address;
}
- System.out.printf("invalid symbol addr %x range is %x - %x\n",
- symbol.address, hexfile.address, hexfile.max_address);
+ System.out.printf("invalid symbol addr %x len %d range is %x - %x\n",
+ symbol.address, len, hexfile.address, hexfile.max_address);
throw new AltosNoSymbol(name);
}