dmolony-DiskBrowser/src/com/bytezone/diskbrowser/applefile/BootSector.java

48 lines
1.4 KiB
Java

package com.bytezone.diskbrowser.applefile;
import com.bytezone.diskbrowser.disk.AbstractSector;
import com.bytezone.diskbrowser.disk.Disk;
public class BootSector extends AbstractSector
{
AssemblerProgram assembler;
String name; // DOS or Prodos
public BootSector (Disk disk, byte[] buffer, String name)
{
super (disk, buffer);
this.name = name;
}
@Override
public String createText ()
{
StringBuilder text = new StringBuilder ();
if (assembler == null)
{
// The first byte in the buffer is the number of sectors to read in (minus 1)
int sectors = buffer[0] & 0xFF;
// System.out.printf ("Sectors to read : %d%n", (sectors + 1));
if (sectors > 0)
{
int bufferSize = buffer.length * (sectors + 1);
byte[] newBuffer = new byte[bufferSize];
System.arraycopy (buffer, 0, newBuffer, 0, buffer.length);
for (int i = 0; i < sectors; i++)
{
byte[] buf = disk.readSector (i + 1);
// System.out.printf ("%d %d %d%n", buf.length, buffer.length, newBuffer.length);
System.arraycopy (buf, 0, newBuffer, i * buf.length, buf.length);
}
buffer = newBuffer;
}
assembler = new AssemblerProgram (name + " Boot Loader", buffer, 0x800, 1);
}
text.append (assembler.getText ());
return text.toString ();
}
}