What does the infamous sector zero at SCSI (or SASI) ID zero look like?
As you might know, this sector is where the BlackBox' configuration is saved. This configuration takes up 256 bytes.
The configuration starts with nine entries. One each for D1: through D9:. Each entry consists of 18 characters.
Bit 7: 0 = Use partition 1 = Use SIO or FloppyBoard diskdrive Bits 6-1: The partition's position in the partitionlist, starting with 16.
Bit 7: 1 = Partition is write protected Bit 6: 1 = UltraSpeed on for SIO drive Bit 5: 1 = Partition uses double density Bit 4: If bit 7 of the 11th byte is set, switch in: 0 = SIO drive 1 = FloppyBoard drive Bit 3: 1 = UltraSpeed on for FloppyBoard drive Bit 2, 1, 0: Position in the controllerlist
Low, middle and high byte of the starting sector of the partition:
If you are using 256 bytes per sector on the harddrive, this number is the starting sectornumber you see in the BlackBox menu, minus one. If you are using 512 bytes per sector on the harddrive, this number is the starting sectornumber you see in the BlackBox menu, minus one, devided by two.
Let's say your starting sector number is 17:
If you're using 256 sectors on the harddrive side, 17-1=16, the character stored here has the ATASCII code of 16. But if you are using 512 byte sectors, 16:2=8, the character stored here has the ATASCII code of 8. The maximum number you can enter here - via the menu - is 16777215. If somebody ever wants to upgrade the BlackBox ROM, (s)he might want to increase this number to 33554431 if 512 byte sectors are used.
16777215 sectors means we have an addressing range of 4 Gigabyte.
33554431 sectors means we have an addressing range of 8 Gigabyte.
Low and middle byte and high bits of the length of the partition in sectors plus one. This is the number of sectors DOS sees, so it doesn't matter if you are using 256 or 512 byte sectors on the harddrive.
Let's do the math:
2 bytes makes 256 times 256 sectors makes 65536 sectors.
65536 sectors times 256 bytes are 16777216 bytes or 16384 kilobyte or 16MB. 2 extra bits tell us we have to multiply this number by 4. 4 times 16MB makes 64MB.
The highest number you can enter here is 262143. That's one sector short of 64MB.
Bits 7-4: SIO drive number Bits 3-2: FloppyBoard drive number
Next is the word "BlackBox" followed by a SPACE. I guess this is to make sure this is BlackBox configuration stuff.
The next 64 bytes make up the controllerlist. There are 8 bytes for each of the 8 possible SCSI/SASI devices.
Bits 7-5: Local Unit Number (LUN) Bit 4: 0 = SCSI 1 = SASI Bit 3: 0 = 256 bytes per sector 1 = 512 bytes per sector Bits 2-0: SCSI/SASI ID number
Low and high byte of the number of cylinders.
Bits 7-4: Number of heads Bits 3-0: Step rate
Reduce Write Current cylinder (low and high bytes)
Write Precompensation cylinder (low and high bytes)
Thanks to Matthias Reichl for informing me about these 4 bytes and for reminding me that there is a lot of information in the BlackBox manual.
There is no easy way to confirm this. The BlackBox manual does give the impression that the above assumption is true though. According to Matthias this information is only used on older harddrives. So let's not worry about those 4 bytes.
The last 21 bytes are decoded like this:
The first two bytes never changed, no matter what I changed in the configuration, they were always both zero.
Bit 7: 1 = I/O Sound on Bit 6: 1 = RS232 port on in pre 1.30 BlackBox ROM versions. Has been moved to the 8th byte (see below). That's what the BlackBox manual says. My BlackBox (ROM version 2.16) tells me bit 6 is always 1 Bit 5: 1 = Printer port on Bit 4: 1 = P: Linefeed on Bit 3-0: 0000 respond to P1: 0001 respond to P2: 0010 respond to P3: 0011 respond to P4: 0100 respond to P5: 0101 respond to P6: 0110 respond to P7: 0111 respond to P8: 1000 respond to all printer numbers If bit 5 is 0 then bits 3-0 are 0000.
(BTW if your BlackBox is equipt with a BlackBox Enhancer - which is sold separately, but is also included in the FloppyBoard - you can use P9: to get the printer to print all the ATARI characters just as they appear on your screen. Since a couple of years, Bob Puff/CSS has been shipping all BlackBoxes with ROM version 2.16. Versions starting with a 2 have FloppyBoard support, versions starting with a 1 do not.)
Bit 7: 1 = Printer spooler enabled Bit 6: 0 = Use BlackBox' internal RAM 1 = Use XE banks Bit 5: 1 = XE banks available Bit 4: 1 = BlackBox internally has 64kB RAM available Bits 3-0: Never changed
Low, middle and high byte of the sectornumber where the partitionlist can be found. This is the actual sector number. So if you are using 512 byte sectors, this number is multiplied by 2 before it is displayed in the "Port Statuses" page.
Controls the RS232 port from BlackBox ROM version 1.30 on up.
Bits 7 and 6: 00 Off 01 On 10 Flow (flow control, also known as hardware handshake, on) Bits 5-0 are always zero.
Each byte stands for one FloppyBoard drive. The 10th byte is for FloppyBoard drive 0 and so on. The following goes for each of them:
Bit 7: I have no clue, but it's set on one of my 1.44 meg drives and reset on the other. Bits 6 and 5: 00 = XF 01 = Perc 10 = ATR Apparently, the XF551, the Percom and ATR8000/8500 double sided drives all use a different order in which the sectors are put on the disk. Maybe someone could add a PC disk setting, so we can look at a PC disk with a sector editor. Bits 4 and 3: step rate 00 = 3 01 = 6 10 = 12 Bits 2-0: 000 = undefined 001 = 180kB 010 = 360kB (5.25") 011 = 1.2 MB 100 = 360kB (3.5") 101 = 720kB 110 = 1.44MB 111 = 1 meg (8") If the Percom block is read, this byte shows up as the 9th byte. This byte has been called "translation control", "drive select" and "drive present".
20th and 21th byte make up the checksum. See the BlackBox manual for the checksum routine the BlackBox uses.
On a 512 byte per sector drive, the rest of sector zero is empty, as is sector number one.
I've used a patched version of my CD Data Reader to read the configuration data off of sector zero. After decoding everything, I have confirmed my suspicions with the BlackBox manual (the on-line version unfortunately doesn't seem to be as detailed as the paper one you get with the BlackBox). I wasn't able to confirm the stuff that concerns the FloppyBoard, since neither the BlackBox manual nor the FloppyBoard manual mention the bits/bytes/addresses the FloppyBoard uses.
The partitionlist starts with 36 unused characters. On my harddrive, these are all ATASCII code 255, but my entire harddrive was formatted with ATASCII code 255. So there might be ATASCII code 0's on your harddrive. What is next depends on how many partitions you have declared in the partitionlist. Unused parts of the partitionlist sectors contain the same character as empty sectors.
All entries in the partitionlist are 18 characters long and are built simular to those in the controllerlist. With the following exceptions:
- Bit 7 of the 11th byte is never set
- Bit 4 of the 12th byte is never set
The BlackBox manual tells us, the partitionlist uses 14 sectors. The partitionlist is stored in the first 256 bytes of (what the harddrive thinks is) a sector. This means that on 512 bytes per sector systems, the upper halves of the partitionlist sectors are unused. Of the 256 bytes, the last three bytes are not used, so that the first byte in each sector is the first byte of a partitionlist entry. Each sector (as seen on the harddrive side) contains 14 entries of 18 characters each, making 252 bytes. Only the first sector used for the partitionlist has 12 entries. Since only the first 252 bytes of a sector are used, on 512 byte sectors it looks (on the DOS/Atari side) like every second sector is unused. I guess that means, the partitionlist takes up 14 sectors (on the DOS/Atari side, as opposed to the harddrive side) only on 512 byte harddrives, on 256 byte harddrives (which are becomming very rare), it probably only takes up 7 sectors.