dmolony-DiskBrowser/src/com/bytezone/diskbrowser/prodos/ProdosIndexSector.java

42 lines
1.2 KiB
Java
Raw Normal View History

2015-06-01 09:35:51 +00:00
package com.bytezone.diskbrowser.prodos;
import com.bytezone.diskbrowser.disk.AbstractSector;
import com.bytezone.diskbrowser.disk.Disk;
import com.bytezone.diskbrowser.disk.DiskAddress;
2016-02-24 21:11:14 +00:00
import com.bytezone.diskbrowser.utilities.HexFormatter;
2015-06-01 09:35:51 +00:00
class ProdosIndexSector extends AbstractSector
{
2016-02-28 07:17:58 +00:00
private final String name;
2015-06-01 09:35:51 +00:00
ProdosIndexSector (String name, Disk disk, byte[] buffer, DiskAddress diskAddress)
2015-06-01 09:35:51 +00:00
{
super (disk, buffer, diskAddress);
2015-06-01 09:35:51 +00:00
this.name = name;
}
@Override
public String createText ()
{
2017-04-22 06:31:25 +00:00
StringBuilder text = getHeader ("Prodos Index Block : " + name);
2015-06-01 09:35:51 +00:00
for (int i = 0; i < 256; i++)
{
2017-04-22 06:31:25 +00:00
text.append (
String.format ("%02X %02X %02X", i, buffer[i], buffer[i + 256]));
2015-06-01 09:35:51 +00:00
if (buffer[i] != 0 || buffer[i + 256] != 0)
2018-07-22 20:52:41 +00:00
{
int blockNo = HexFormatter.intValue (buffer[i], buffer[i + 256]);
String valid = disk.isValidAddress (blockNo) ? "" : " *** invalid ***";
text.append (String.format (" %s%s%n", "block " + blockNo, valid));
}
2015-06-01 09:35:51 +00:00
else
text.append ("\n");
}
2017-04-22 06:31:25 +00:00
2015-06-01 09:35:51 +00:00
if (text.length () > 0)
text.deleteCharAt (text.length () - 1);
2017-04-22 06:31:25 +00:00
2015-06-01 09:35:51 +00:00
return text.toString ();
}
}