You have to take care on Big/Little Endian!
IDE is 16 bit interface (while ACSI/SCSI is 8 bit).
Motorola is using Big Endian data format for 16 bit word. That means, the high byte is in the front of the low byte. Intel is using little endian data on 16 bit words. That is the functionality of the "Byte swap" function when preparing an SD card for your falcon.
Little_Endian -> Big_Endian -> Little_Endian: 0A -> A0 -> 0A ; 00000000 00001010 -> 00001010 00000000 -> 00000000 00001010
The thing is, that the Falcon needs Big Endian data format to boot from a CF card. Booting means loading program code. And Motorola program code is in Big Endian. If it would read 68k program code in Little Endian it would not understand and not execute it. It would hang up and/or bomb.HDDRIVER (and ppera's driver) can do byte swap, but only after HDDRIVER has been booted from a Big Endian media.
The complicate thing is, that Falcon needs to talk to the CF card in Little Endian for sending commands to the drive. So each command is byte swapped, but data by default must by Big Endian. This is done by TOS internally automatically. This is because IDE was designed following the ISA bus specification for IBM compatible personal computers. As I told above, Intel 80x86 processors (and their compatible derivates from NEC, AMD, Cyrix, IBM, TI, ...) are Little Endian processors, and ISA bus is close to design of 80286 processor bus, and IDE interface is just like ISA bus with some adress decoding logics, that means, it is Litte Endian operation. So on Falcon side, commands to IDE/CF drives are Little Endian that IDE or CF drive understands it, while useable data in the drive's data sectors has to be Big Endian, so that the 68030 can execute Big Endian programming code, like the harddisk driver or any application.
But PC IDE standard is defined as command and data in Litte Endian. So MS-DOS, Windows, Linux and other x86 based operating systes also expects data in Little Endian. Linux can handle this after it has been booted from a Little Endian media (there is an optional Atari disk driver in Linux Kernel). But MS-DOS and Windows can't, they even do not see the partition structure of a Big Endian media.
The other thing on PC is, that on traditional MBR style partition schema (MS-DOS 2.x up to Win 10) you can't have more than 4 primary partitons (GPT is different!), if you want more on MBR schema, you need to create at least one primary partition (only from there PC can boot OS!),and then you need to create a "secondary partition", and inside that secondary you can create as much "extended partitions" as you want. (Modern Windows installers are hiding this fact from the user, they create automatically a primary boot partition and put all other in secondary/extended partitions) The Atari partition schema is totally different, you don't need to take care on primary, secondary and extended partitions, you just create as much partitions as you want. MS-DOS and Windows can only support it's MBR partition schema, and since Win 7 SP1 also GPT, which is again totally different, also different to TOS partition schema. On the other side, HDDRIVER can read Atari partition schema and MBR, but not yet GPT (I think Uwe S. is working on this...)
The summary is:
a) Atari needs Big Endian Media to boot from harddisc drive
b) TOS ROM can only read the harddisk driver from Atari partition schema
c) as soon as hddriver has been loaded, it can access ATARI partition schema and MBR and it can support byteswap for Little Endian to Big Endian conversion
d) Byteswap needs to be done by processor (68030) through some program in harddisk driver, that means, it's slower than accessing Big Endian media. (It's a kind of triangle swap: Temp=Highbyte, Highbyte=Lowbyte, Lowbyte=Temp, and this has to be done for each 16 Bit word to read/write from media)
e) It's not possible to mix Little Endian and Big Endian partitions on one media (drive).
f) PC/MS-DOS/Windows/x86-Linux needs Little Endian to boot OS (same for Free/Net-BSD, OS-X, x86-BeOS, x86-Solaris, ...)
g) Microsoft OS does not support Atari partition schema
h) Microsoft OS does not support Big Endian media
This is a conflict. It can't be solved on one media!
And now, here comes the simple solution:
Use two compact flash cards in your falcon. You need a dual slot CF adapter. I recommend the one made by Delock (you can get it on eBay, Amazon, ...), but others work as well. The advantage of the Delock is that it has the same mechanical format as a 2,5 inch IDE harddisk has. So you can directly replace the Falcon's internal harddrive without too much mechanical modification. But later I will give you a better idea where to place the adapter as it is very inaccessible on Falcons hdd bracket. Dual CF slot adapters configure automatically one CF as the master drive, the other one as slave.
1. A master CF for the Falcon to boot. This one is partitioned in Big Endian (bytes wap OFF) in just TOS compatible partition schema. (No need for TOS/WIn compatible partition schmea as PC will never see this CF!) It can be of any size with any number of partitions up to 34 pcs. HDDRIVER supports up to 34 partitions (C: to Z:, plus 0: to 9:). Each BGM partition (also C:) can have up to 1 GB in size, so it's quite easy to even use a 32 GB CF card in the Falcon to boot and store applications, games, demos, music, pictures, movies and other datas. (I think, to access partitions 0: to 9: from TOS you need to use BIGDOS.PRG, I never tryed that much partitions...)
2. A slave CF for data exchange with the PC. As TOS 4.0x can handle up to 1 GB per partition, and DOS/Win can only see the 1st partition, I recommend to use an 1 GB CF for this. This CF needs to be setup by HD driver in TOS/Windows compatible partition schema with byte swap ON (Little Endian), just one partition of 1GB. When you put BIGDOS.PRG (there is a special FALCON version, which needs to be placed as the last program into the AUTO-folder!), you can even use a 2 GB CF with a 2 GB partition. (If you install MiNT, Bigdos is not required to access 2GB DOS/WIN-Little-Endian medias)
So the master always stays in Falcon and is only used internally. The slave CF is used to plug in the PC, copy files onto it, plug it in the Falcon, copy files from it to the Master CF. My personal experience is very well doing so. But I had a lot of difficullty to setup that slave CF with HDDRIVER, it was setup as I told, TOS/DOS compatible with byte swap ON, but my PC (Windows XP, 7, 8, 10) could not read it. So I found the more easy way to just set it up on my PC, just formated it there, and HDDRIVER could read/write it without any issue.
My personal setup on my two Falcons is:
Master CF with 32 GB, 16x 1GB BGM partition + 16 GB LNX partition (for MiNT). BIGDOS.PRG (Falcon version) in c:\auto as the last program to start before desktop, except if I boot MiNT, then BIGDOS is off.
Slave CFs, I have different ones of 512MB up to 2GB, all partitioned/formatted using Windows, FAT filesystem, one partition of CF's size.
To access my slave CF, I have replaced the Falcon's internal floppy drive by a slimline drive (from notebook). This means, I can install the dual CF adapter under the flopyp drive, so both CF slots are accessibe from the outside without drilling holes in Falcon chassis. But usually the master always stays inside the slot, I only remove and plug the slave (while the Falcon is off!).
Please note: On ACSI/SCSI you don't need to take care on byte swap, just keep it off. The drives do internally the correct bytesswapping. This is totally transparent to the Atari and PC.
Another experience: There are CFs which do not display a name. Usually you will see a drive name in HDDRIVER boot message, or HDRUTIl, like "QUantum LPS52Pro" or "Kingston 16GB", but some CF don't display anything, just blank. First I thought, they would not work in Falcon, but no, in HDRUTIL just select the blank entry and continue to set it up. These CFs (also some brand name CFs from SanDisk, Kingston, nonames, etc, or Fakes) just don't display anything but they work as expected.
I hope that now everything is clear!
Last edited by 1st1
on Thu Mar 29, 2018 11:35 pm, edited 8 times in total.
Power without the Price. It's not a bug. It's a feature. _/|\_ATARI
1040STFM in PC-Tower (PAK68/2, OvrScn, 4 MB, 1GB SCSI, CD-ROM...) * 2x Falcon 030 32GB/14MB+ScrnBlstrIII * 2x TT030 73GB/20MB+Nova * 520/1040STFM * 520/1040STE * 260/520ST/+ * some Mega ST * 2x Mega STE 500MB/4MB+M.CoCo * Stacy * STBook * SLM605 * SLM804 * SLM605 * SMM804 * SH 204/205 * Megafile 30/44/60 * SF314 * SF354 * 5x Pofo * PC3