Little blog about my activity on Atari ST hard disk, mass storage HW and SW
- over years
  I could say that all it started when I started programming Atari ST floppy related SW - in 1987-88. First program was COPYACC, done in pure ASM, with low level FDC access, mostly for speed. This is relevant because floppy and ACSI port use same DMA chip in ST .

In 1992 I bought for some 100 DEM used 40 MB Seagate IDE hard disk with plan to attach it to Atari. Inspiration came from PC HW book, this page:


 Well, those with some knowledge may conclude a lot from above schematic.  What is essence is that IDE (AT-bus in those times) works on very simple principle:  CPU adressing some I/O port - in this case IDE port and basically accessing it as RAM .
With write can set mode, write address of sector(s), count - what want to read into RAM of computer or to write from it to disk. Of course, there is command to start some operation too.  After start of sector read command, driver SW needs to wait that data is ready (signal) and then can read whole sector in 256 steps - for 512 bytes, since it's 16 bit wide. SW needs self to address RAM and increment it, while IDE port for data is same all time - disk will supply data in order.

On HW side, IDE adapter can be very simple in 16-bit computer. I did put my design from 1992 in about 1998 online, and was one of the firsts.  Later made IDE adapter for Sinclair Spectrum, what was more complicated since it is 8-bit . And disks of that time could not work in 8-bit mode.
In beginning I used diverse existing hard disk driver SW as driver. And mostly partitions under 32 MB size - that is important factor , more about little later ...

Started work on own driver SW around 1998 - first version was so called CHS IDE driver - good for smaller capacity drives.
I hade some 60 MB conner, 160 MB IBM 2.5 inch drives in my 520 ST expanded to 2.5 MB .

Then was some pause in my Atari activity, but I went back around 2006 . When good and fast enough emulators for Windows appeared. 

I joined atari-forum (AF in further text), Atariage, Atarimania .  Made some floppy SW, but this time for Windows (FloImg) .
Then wanted to make some special IDE adapter - for ST cartridge port. And I wanted that it be fast, faster than Paskud, for instance.
1 thread from that time:  Thread named 'Some Idea'
Was not pleasure, and as it was usual, I learned that best is if I do as much is possible alone - what usually meant 100% of work :-)
But I then invented complete new way of fast cartridge port write. And said there that will not publish it. Partially because was disappointed by people's reactions and attitude.

Fast IDE cartridge adapter  CATA design started, and I had working prototype in month-two. As usual, SW part took more time than HW part.
More details:  Astide
At middle of page ...  Note that it is old content, in meantime it is improved, and read speed is much better.

Later CATA is basically same considering HW, but there is new, superfast mode - speed is 3.6 MB/sec with 8 MHz Atari ST(E) .
Price for it is little intervention in machine - need to cut 1 R/W signal, and lead out 2 wires, so can invert that signal when needed.
Without it, max read speed is as usual by IDE adapters - 1.6 MB/sec, little more if using blitter .

I could now write in short principle of work, but it will only happen if someone specificaly asks for that.

TOS and work with hard disks.
As we know, TOS is old creation, from era when hard disks were expensive and rare, but there is support for them starting from first TOS 1.00 .
Things were similar like with floppies - using standard format, but not all details were PC (DOS) compatible. So, there is FAT16, with Intel byte order (low Endian) for compatibility, but it is compatible only for partitions under 32 MB size. Larger ones, called BigDOS FAT16, or by Atari AHDI something like BigGEM . And that is part what certainly Atari and DR (Digital Research) did not well.
In short: Instead 32-bit sector addressing TOS stays at 16-bit one, and result (better said drawback) is that then needs to use so called large sectors to be able to access partitions over 32 MB. That means need for larger buffers, slower and less efficient work. The reason was most likely not so good C compiler used, and lack of motivation of programmers.  And if it can be justified for early TOS versions, no excuse for why it was not improved in later ones. Even Falcon TOS 4.xx is same in it.  And it is possible to do it better - myself corrected TOS 1.04 and 1.62 with real FAT16 support - where of course 32-bit sector addressing is used, + many other corrections. 2 months of work.

My article from 2014 about TOS and hard disks

And something interesting, what I seen after googling for my own WEBpage:
Type in "atari tos fat16 bigdos" - and first 3 hits will be from my site. No, I did not pay anything to Google for that :-)

To be continued ....