dmolony-DiskBrowser/src/com/bytezone/diskbrowser/cpm/DirectoryEntry.java

48 lines
1.6 KiB
Java
Raw Normal View History

2016-02-24 09:48:09 +00:00
package com.bytezone.diskbrowser.cpm;
import com.bytezone.diskbrowser.HexFormatter;
public class DirectoryEntry
{
private final int userNumber;
private final String name;
private final String type;
private final int ex;
private final int s1;
private final int s2;
private final int rc;
private final byte[] blockList = new byte[16];
public DirectoryEntry (byte[] buffer, int offset)
{
userNumber = buffer[offset] & 0xFF;
name = new String (buffer, offset + 1, 8).trim ();
type = new String (buffer, offset + 9, 3).trim ();
ex = buffer[offset + 12] & 0xFF;
s2 = buffer[offset + 13] & 0xFF;
s1 = buffer[offset + 14] & 0xFF;
rc = buffer[offset + 15] & 0xFF;
System.arraycopy (buffer, offset + 16, blockList, 0, 16);
}
@Override
public String toString ()
{
StringBuilder text = new StringBuilder ();
text.append (String.format ("User number .... %d%n", userNumber));
text.append (String.format ("File name ...... %s%n", name + "." + type));
// text.append (String.format ("File type ...... %s%n", type));
text.append (String.format ("Extents lo ..... %d%n", ex));
text.append (String.format ("Extents hi ..... %d%n", s2));
text.append (String.format ("Reserved ....... %d%n", s1));
int blocks = ((rc & 0xF0) >> 3) + (((rc & 0x0F) + 7) / 8);
text.append (String.format ("Records ........ %02X (%d)%n", rc, blocks));
text.append (String
.format ("Allocation ..... %s%n",
HexFormatter.formatNoHeader (blockList, 0, 16).subSequence (8, 55)));
return text.toString ();
}
}