X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altoslib%2FAltosDebug.java;h=57e97a18fe36cd50e92479b47ab05583d30625b2;hp=4d8e3ae7cfa994bb7718ac41bbf0691a98111c76;hb=HEAD;hpb=09e0c304b420a12fa1616005db946523c6e5bef1 diff --git a/altoslib/AltosDebug.java b/altoslib/AltosDebug.java index 4d8e3ae7..117b0450 100644 --- a/altoslib/AltosDebug.java +++ b/altoslib/AltosDebug.java @@ -3,7 +3,8 @@ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of @@ -15,7 +16,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_14; import java.io.*; @@ -52,17 +53,14 @@ public class AltosDebug { public static final byte GET_CHIP_ID = 0x68; - AltosLink link; + private AltosLink link; boolean debug_mode; - void ensure_debug_mode() { + void ensure_debug_mode() throws InterruptedException { if (!debug_mode) { link.printf("D\n"); - try { - link.flush_input(); - } catch (InterruptedException ie) { - } + link.flush_input(); debug_mode = true; } } @@ -81,13 +79,16 @@ public class AltosDebug { } public void close() { - link.close(); + try { + link.close(); + } catch (InterruptedException ie) { + } } /* * Write target memory */ - public void write_memory(int address, byte[] bytes, int start, int len) { + public void write_memory(int address, byte[] bytes, int start, int len) throws InterruptedException { ensure_debug_mode(); // dump_memory("write_memory", address, bytes, start, len); link.printf("O %x %x\n", len, address); @@ -95,7 +96,7 @@ public class AltosDebug { link.printf("%02x", bytes[start + i]); } - public void write_memory(int address, byte[] bytes) { + public void write_memory(int address, byte[] bytes) throws InterruptedException { write_memory(address, bytes, 0, bytes.length); } @@ -112,7 +113,11 @@ public class AltosDebug { int i = 0; int start = 0; while (i < length) { - String line = link.get_reply().trim(); + String line = link.get_reply(); + if (line == null) + throw new IOException("No reply"); + + line = line.trim(); if (!AltosLib.ishex(line) || line.length() % 2 != 0) throw new IOException( String.format @@ -132,7 +137,7 @@ public class AltosDebug { /* * Write raw bytes to the debug link using the 'P' command */ - public void write_bytes(byte[] bytes) throws IOException { + public void write_bytes(byte[] bytes) throws IOException, InterruptedException { int i = 0; ensure_debug_mode(); while (i < bytes.length) { @@ -147,7 +152,7 @@ public class AltosDebug { } } - public void write_byte(byte b) throws IOException { + public void write_byte(byte b) throws IOException, InterruptedException { byte[] bytes = { b }; write_bytes(bytes); } @@ -257,12 +262,12 @@ public class AltosDebug { return true; } - public AltosRomconfig romconfig() { + public AltosRomconfig romconfig() throws InterruptedException { try { - byte[] bytes = read_memory(0xa0, 10); - return new AltosRomconfig(bytes, 0); + byte[] bytes = read_memory(0x00, 0x200); + AltosHexfile hexfile = new AltosHexfile (bytes, 0x00); + return new AltosRomconfig(hexfile); } catch (IOException ie) { - } catch (InterruptedException ie) { } return new AltosRomconfig(); } @@ -277,4 +282,4 @@ public class AltosDebug { public AltosDebug (AltosLink link) { this.link = link; } -} \ No newline at end of file +}