I think I've actually found a FAT8 disk image: Toshiba T100 Personal Computer T-DISK BASIC (Version 1.0) (1982)
Why I think it is FAT8:
- Starting near offset 0xc530, there are repeated occurrences of the strings
FATNUM
, FATLST
, FATONE
- Shortly after offset 0xc810, this string:
file allocation table copies
; the same string occurs again near 0x22620
- Starting near 0x22cd0 is this description of the disk format:
*** 8 sectors/cluster, 2 clusters/track, 35 tracks/side, 2 sides/floppy
*** track 0 not used because its single-density
*** tracks 1-7 hold IPL program and BASIC (if system disk)
*** tracks 8-17 hold user files
*** track 18 side 0 holds directory and file-allocation-table
*** track 18 side 1 holds user files
*** tracks 19-34 hold user files
Consistent with "track 0 not used", the first 0x1000 bytes of the image are all nulls.
The big giveaway it is FAT8, is at offset 0x24000, we find what is obviously a FAT8 directory:
00024000: 46 44 55 54 49 4c 20 20 20 80 47 ff ff ff ff ff FDUTIL .G.....
00024010: 46 4f 52 4d 41 54 20 20 20 80 49 ff ff ff ff ff FORMAT .I.....
00024020: 56 4f 4c 43 4f 50 59 20 20 80 45 ff ff ff ff ff VOLCOPY .E.....
00024030: 4d 45 4e 55 20 20 20 20 20 80 4b ff ff ff ff ff MENU .K.....
00024040: 4e 45 4f 4e 20 20 20 20 20 80 41 ff ff ff ff ff NEON .A.....
00024050: 4c 43 44 20 20 20 20 20 20 80 39 ff ff ff ff ff LCD .9.....
00024060: 44 52 41 57 31 20 20 20 20 80 3e ff ff ff ff ff DRAW1 .>.....
00024070: 44 52 41 57 32 20 20 20 20 80 3d ff ff ff ff ff DRAW2 .=.....
00024080: 44 52 41 57 33 20 20 20 20 80 3a ff ff ff ff ff DRAW3 .:.....
00024090: 47 52 45 41 54 31 20 20 20 80 4c ff ff ff ff ff GREAT1 .L.....
000240a0: 42 55 53 31 20 20 20 20 20 80 4d ff ff ff ff ff BUS1 .M.....
000240b0: 47 52 41 50 48 31 20 20 20 80 36 ff ff ff ff ff GRAPH1 .6.....
000240c0: 00 45 53 54 50 52 20 20 20 80 35 ff ff ff ff ff .ESTPR .5.....
000240d0: 50 49 43 31 20 20 20 20 20 80 4e ff ff ff ff ff PIC1 .N.....
000240e0: 47 41 4d 45 31 20 20 20 20 80 4f ff ff ff ff ff GAME1 .O.....
Note the 9 character space-padded file names, followed by an attribute byte (always 0x80 for these files–0x80 = 200 octal, so these files all have the binary attribute set), and then the initial cluster, and the rest of the 16 byte directory entry is padded with 0xff. This is consistent with the format given in the MS BASIC-80 reference manual. The existence of utility programs such as FDUTIL
and FORMAT
explains the presence of strings giving the disk layout.
And then, starting at 0x24d00, we find what appears to be 3 copies of a FAT8 file allocation table. Each copy is 256 bytes long, and the 3 copies are identical. Next, at 0x25000 comes the FORMAT program.
0x24000 must be the start of the "directory track", track 18 side 0. From this we know a track is 0x1000 (4096) bytes long. The whole image is 320KiB, which is 80*4096, so there must be 80 tracks total, 40 tracks per side. 16 sectors per track, and 4096 / 16 = 256, so must be 256 bytes per sector, with a 2KB cluster size.
Counting both sides, a single track is 8192 bytes. So track 18 would start at offset 0x24000 – which is exactly where we find the directory. The first FAT copy is at 0x24d00 – so cylinder 18, head 0, sector 13 is the 1st FAT copy, sector 14 is the 2nd FAT copy, and sector 15 is the 3rd. Only sector 0 of the directory is in use on this disk, but sectors 1-11 are all 0xFF, suggesting they are reserved for the directory also. Sector 12 is all zeroes, so it may just be a reserved sector.
I think the IPL program starts on cylinder 0 side 1 sector 0. The first instruction is JP 0xd049
and the second is JP 0xd02c
. It looks like the boot sector was loaded at 0xd000
, since using that origin they both appear to be valid jump targets within the sector. I'm not sure why the two absolute jumps in succession. It is followed by 38 zero bytes (NOP), which appears to be used as a data area (I see later LD instructions referencing it.) The IPL program appears to extend for 8 sectors.
At offset 0x1800 (cylinder 0 side 1 sector 8) is something interesting – it looks like blank ECMA-58/67/91 file labels (HDR1 followed by blanks). I'm not sure if this is some kind of mechanism so something expecting a ECMA-58/67/91 disk would recognise it as valid. (ECMA-58/67/91 is basically just IBM's original floppy format except in ASCII instead of EBCDIC.) It continues until the end of that track. However, there is no VOL1 label in track 7, instead that's the end of the IPL program machine code. Or I suppose maybe this image is of a disk that was originally ECMA-58/67/91 and got rewritten as FAT8, and this sector just got missed??
Cylinder 1 head 0 sector 0 is the start of BASIC. Consistent with the format description I found, it appears to extend until (roughly) the end of cylinder 7, so 56KB in total (which seems huge for an 8080/Z80, there'd be almost no room left for programs – although maybe not all of it is loaded into memory at once???); cylinder 7 head 1 sector 11 contains the string:
BASIC-80 Rev. 5.21
Toshiba Personal Computer Extended BASIC
Ver 0.5 (c) 1981 by Microsoft
Created: 09-Nov-81
Cylinder 6 head 1 sector 3 contains a slightly different version string:
BASIC-80 Rev. 5.21
Toshiba Extended BASIC Ver 1.0
(c) 1981 by Microsoft
Created: 31-Dec-81