What everyone easily could find out is the main disk layout of the
FZ-1, which organizes them as follows:
-
80 tracks
-
2 sides
-
8 sectors/track
-
1024 bytes/sector
-
sector interlave 3:1
Internally, disks are accessed by sector numbers which range from 0 to
1279. This individual sector number is calculated as
-
secno = track#*16+side#*8+sector#
Now we know to access how to access the disk, but how is the data
on it organized?
Of the 1280 possible sectors the first three serve special tasks which
are
-
disk name and sector allocation table (secno #1)
-
directory of the first 32 files (secno #2)
-
directory of the second 32 files (secno #3)
Each file will consist of an introducing Data Information Sector which
allows a single file to be scattered into 255 pieces of variable length
(within 1kB boundaries, of course) by indexing each chunk of data by first
and last sector of a consecutive data block. The missing 4 bytes (1024-255*4)
are used as offset for the first data block and the overall data size.
Thus, the minimum file size is 2048 bytes: 1024 bytes for indexing, 1024
bytes of data. If a data chunk is smaller than 1024bytes it is padded up
with 0x00.
Confused? Let's view the details:
Byte Address |
Function |
Value |
0x000-0x00b |
Disk Name |
ASCII characters |
0x00c/0x00d |
unused |
0x0000 |
0x00e/0x00f |
Disk Name tag |
0x0200 |
0x010-0x01b |
Work Pass (Copy of Disk Name) |
ASCII characters |
0x01c-0x01f |
unused |
0x00 |
0x020-0x07f |
spare |
0x00 |
0x080-0x0cf |
Sector Allocation Table of tracks 1-80
-
MSB represents side 1
-
LSB represents side 0
-
bits 7-0 represent sectors 8-1 (1=occupied)
|
word |
0x0d0-0x11f |
reserved |
0x00 |
0x120-0x3ff |
spare |
0xff |
|
Disk Name & Sector Availability Map (Sector 1)
|
|
|
|
|
Byte Address |
Function |
Value |
0x000-0x00b |
File Name |
ASCII characters |
0x00c |
File Type |
0x00 = full dump
0x01 = voice dump
0x02 = bank dump
0x03 = effects dump
0x04 = sequencer data(*)
0x05 = external program |
0x00d |
Disk Number(*) |
0x00/0x01 |
0x00e/0x00f |
Data Information Sector |
sector number (0-1279) |
0x010-0x3ff |
31 more directory entries |
|
|
Directory Entry (Sectors 2 and 3) Information marked by (*)
provided by Jeff McClintock
|
|
|
|
|
Byte Address |
Function |
Value |
0x000/0x001 |
Start Sector Number of data fragment #1 |
sector number (0-1279) |
0x002/0x003 |
End Sector Number of data fragment #2 |
sector number (0-1279) |
0x004-0x3f9 |
253 more data fragment pointers |
|
0x3fa/0x3fb |
Number of banks in file |
word |
0x3fc/0x3fd |
Number of voices in file |
word |
0x3fe/0x3ff |
Number of PCM data blocks |
word |
|
Data Information Sector
|
|
|
|
|
Byte Address |
Function |
Format |
0x000-0x3ff |
Data |
OS Data Structures
padded with 0x00 if smaller than 1kB |
|
Data Sector
|
|
|
|
|
|