40

According to Wikipedia, the original FAT8 filesystem was developed by Marc McDonald in 1977 or 1978, as part of "NCR BASIC +6", a port of Microsoft BASIC to an 8080-based NCR data entry terminal (probably the NCR 7200, although Wikipedia also notes that sources are contradictory on which exact NCR model was involved.) It was then included in Microsoft Standalone Disk Basic-80 (1978), Microsoft Standalone Disk BASIC-86 (shipped to Seattle Computer Products in 1979), and McDonald's MIDAS/M-DOS operating system (an internal project which Microsoft apparently never released).

In 1980, while developing Seattle Computer Products Q-DOS (soon renamed to 86-DOS, and which then became PC-DOS and MS-DOS), Tim Paterson modified FAT8 (which he was familiar with from Standalone Disk BASIC-86) to FAT12. The biggest change–as the change in name implies–was increasing the size of a FAT entry from 8-bits to 12-bits. Another major change was increasing the allowed file name length from 6.3 to 8.3, for CP/M compatibility. Later in development, the size of directory entries was doubled from 16 bytes to 32, to make room for including file timestamps.

There is some documentation on FAT8 in Microsoft BASIC-80 version 5.0 Reference Manual (1979), in particular "Appendix H: Standalone Disk BASIC" (PDF page 158 onwards). See section H.11 ("Disk Allocation Information", PDF page 165).

The list of supported file attributes is intriguing, and rather different from that supported by FAT12:

Octal Description
200 Binary file
100 Force read after write check
40 EBCDIC file
20 Write protected file

Anyway, after all that background, here is my actual question: do any FAT8 disk images survive?

2 Answers 2

32

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
1
  • 2
    This is amazing.
    – Oliphaunt
    Commented Jun 24, 2023 at 23:19
19

There were several pretty common 8 bit machines with MS-BASIC 5.x including for example the TA Alphatronic PC which featured a Microsoft Extended BASIC 5.11 in ROM. Disk Routines were to be loaded when a drive was connected. I do believe I have several NOS system disks for that machine in storage - plus many more ... somewhere :))

The machine was somewhat successful in Germany, France, Italy, UK and Australia. There should be many surviving systems.

We just had one of them on display with out 'Sneak Preview' two weeks ago. Seen here on the left side:

enter image description here

Sorry for being that blurry, it's part of a low resolution mobile video (we didn't want to show off too much details :)). Note the original packaged software boxes. The machine was not powered up. Not sure I that can be done soon.

5
  • 1
    winworldpc.com/download/7922cb9c-c2aa-c592-7311-c3a5c28f1352 is a disk image labelled "Microsoft BASIC-80 5.26 (10-27-1983) [Alphatronic] [CPM-80] (5.25)". However, despite the "CPM-80" in the label, inspecting the image, it appears to actually be FAT-8 too – I can see a FAT-8 directory table in the middle of it Commented Jun 24, 2023 at 8:46
  • 1
    That image also contains the string "Format program for Directory and FAT" Commented Jun 24, 2023 at 8:54
  • Who is "we" in this context?
    – psmears
    Commented Jun 26, 2023 at 9:32
  • @psmears Computeum, a tiny computer museum in development in Vilshofen.
    – Raffzahn
    Commented Jun 26, 2023 at 9:40
  • 1
    Looks fascinating, good luck with it :)
    – psmears
    Commented Jun 26, 2023 at 9:41

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .