home *** CD-ROM | disk | FTP | other *** search
- <head>
- <title="...forever...">
- <font=monaco10.fnt>
- <font=newy36.fnt>
- <font=time24.fnt>
- <image=back.raw w=256 h=256 t=-1>
- <buf=9417>
- <bgcolor=-1>
- <background=0>
- <link_color=000>
- <module=console.mod>
- <pal=back.pal>
- colors:
- 251 - black
- </head>
- <body>
- <frame x=0 y=0 w=640 h=9417 b=-1 c=-1>
-
- -- - --- -- -----------------------------------------------------
- <f1><c000> IDE Hard Drive Interface
- for Atari XL/XE series!
- <f0> by Jacek Zuk and Konrad Kokoszkiewicz
- ----------------------------------------------------------- -- --
-
- A message to Operating Systems/Disk Operating Systems developers.
-
- Dear developer!
-
- We are pleased to present you a preliminary document about our
- IDE hard drive interface for <link=g51.scr>Atari 130XE</l> (and compatible)
- computers. As existing Disk Operating Systems aren't able to use
- all the capabilities we provided, we are kindly asking you to
- upgrade the latest versions of your work and implement the
- specific IDE features, those have been described below. The four
- general problems we found trying to use any of the existing
- DOSes, are as follows:
-
- 1) All DOSes we tested, i.e. SpartaDOS 3.2g, SpartaDOS X 4.20,
- MyDOS 4.53 and BWDOS 1.10, when they have been executed, seem to
- force the DUNIT (¢0301) value to ¢01. Such action is not
- necessary, because the DUNIT is already set by the XL OS's RESET
- routines, and is obnoxious, because, as a result, the DOS is
- unable to read its config files, when the system has been started
- from a partition other, than D1:.
-
- 2) All the DOSes we tested are unable to read/write 512-byte
- sectors, so they are unable to work in the IDE native mode (see
- below). The interface provides the emulation mode to handle 256-
- byte sector operations, but, as a result, the drive is unable to
- reach its full speed. Especially any writes to the hard drive are
- very slow. The implementation of the 512 byte allocation units
- may also be profitable in the future, if we decide to add support
- for DMA transfers.
-
- 3) All the DOSes we tested are unable to handle big partitions
- (i.e. over 16 MB limit). The implementation of the 512 byte
- allocation units may solve this problem in a part (the limit
- would be 32 MB per partition then), but, if you decide to
- implement big partitions handling, we advise you to consider
- about using the 23-bit sector addressing in conjuntion with the
- larger allocation units (see below for details).
-
- 4) All the DOSes we tested are unable to handle disks D10-D15.
-
- Operating Systems developers please note, that there is no
- necessity to set the DUNIT value in the OS BOOT routine, as the
- DUNIT is already set by previous RESET routines.
-
- We hope, that you will take these problems into consideration,
- decide to support the features described below and don't hesitate
- to send us your comments, if any.
-
- Regards
-
- Konrad Kokoszkiewicz
- E-mail: conradus@plearn.edu.pl
- S-mail: ul. Tomaszowska 95/37
- PL-26-420 Nowe Miasto nad Pilica
- POLAND
-
- ***
-
- IDE Hard Drive Interface v.1.0 - a preliminary document
-
- Copyright (c) 1995-1996 by Jacek Zuk and Konrad Kokoszkiewicz
-
- Made in Poland
-
- ***
-
- The IDE package contains:
-
- 1) the IDE interface
- 2) a power supply
- 3) a cable to connect the interface with a drive
- 4) utilities disk with MyDOS 4.53
- 5) this document
-
- Index rerum
-
- I. Introduction
- II. Capabilities overview
- III. How to make it work (step by step)
- IV. Keystrokes
- V. Write-protection feature
- VI. Executing non-DOS software
- VII. Dual drive configuration
- VIII. Software development information
- IX. Memory usage
- X. Error messages
-
- I. Introduction
-
- Seven years ago, when I first heard about hard drives for the
- Atari 8-bit, a 20 MB SCSI device's price was over 600 USD and, of
- course, was out of reach for people in a country on the wrong
- side of the Iron Courtain, where wages were about 20 USD per
- month. The 1050 floppy drive was a dream - what would I say about
- the hard one...?
-
- Over the next six years many things have been changed. Among
- others, the Iron Courtain got rusty, we have started earning more
- money, got some new Atari computers and, simultaneously, the
- prices of hard drives have gone down dramatically... and one day
- I realised, that it is possible to obtain an IDE hard drive for
- the beloved 8-bit Atari with very reasonable price! But there
- still was no documentation and the only one, that I knew, was a
- theory about writing 'new device' handlers for the XL operating
- system...
-
- The most important thing on my "way to the hard drive" has
- happened, when a friend of mine has found a "Technical Reference
- Manual" for a Caviar WDAC2200. I read this paper very carefully,
- then went to Jack - a person, who looks to know everything about
- wires and other strange gadgets, those have been fixed inside and
- seem to make it work. About a week later Jack said, that there
- was no objections (contraindications, as we used to say) to build
- an interface - so the project started.
-
- The last year we spent thinking, talking, building the hardware
- (Jack), writing the software (me), testing, fixing bugs, catching
- incompatibilities, and learning, learning, learning. We have
- discovered a lot of strange things about Ataris and IDE hard
- drives (some of them have been mentioned below). Finally, we are
- pleased to present you our results - we tried to make them as
- professional, as it have been allowed by the limited (2k) ROM
- space, not very "elastic" operating system and not very great
- processing power of the Atari 8-bit computer. I hope you will
- agree, that we did a good job.
-
- II. Capabilities overview
-
- The Interface's internal software provides two modes: native and
- emulation. The native mode uses a 512 byte physical block as a
- logical data sector, the emulation mode uses the physical block
- to store two 256 byte logical data sectors. ALL existing DOSes
- require the emulation mode to work properly.
-
- Maximum drive capacity: 8388607 physical blocks on each device.
- Maximum number of partitions: 15
- Maximum capacity of a partition: 8388607 logical sectors
- Logical sector length: 256 or 512 bytes (larger blocks will be
- implemented in the future)
- Average speed: 58 kilobytes per second (native mode, R/W)
- 32 kilobytes per second (emulation mode, reading)
- 7 kilobytes per second (emulation mode, writing)
- Booting from any partition
- Write protection capability
- 8 jumpers to set the device number for the operating system
-
- Note, that ALL existing DOSes limit the partition size to 16 MB.
-
- III. How to make it work (step by step)
-
- 1) Make sure, that the power on your computer is turned off.
-
- 2) Insert the interface to the connector at the back side of the
- computer.
-
- 3) Connect the interface and a 3,5" IDE drive with the cable.
- Caution: You may damage the drive if the interface cable is not
- connected properly. Make sure, that pin 1 on the cable (red line)
- is connected to pin 1 on the drive and on the interface (red
- dot).
-
- 4) Connect the power supply and the drive.
-
- 5) Insert the utilities disk into drive 1.
-
- 6) Turn on the power on the hard drive and on the computer
- holding down the SHIFT key. Make sure, if the drive is spinning
- up properly. If not, turn the power off, check the connections
- and try again. Note, that some very old drives need A LOT of
- power, so our power supply may not be sufficient.
-
- 7) Be patient - the Interface waits some seconds when the drive
- is spinning up.
-
- 8) When the MyDOS is ready to use, execute the FDISK.COM file.
-
- 9) A menu should appear. If you see a message like "Device not
- found" instead, please turn the power off, check the connection
- between the interface and the computer, then try again. Check the
- jumper position.
-
- 10) Select the "Surface test" from the main menu. Your drive will
- be tested for bad sectors. If the test finishes without any
- message, the drive is in good condition - no bad sectors have
- been found.
-
- 11) Select the "Partitioning" from the main menu. "Total" will
- indicate you total amount of 512 byte sectors, that have been
- found on the drive, "Remain" - total amount of sectors, that
- haven't been allocated yet, "Specs" will show a number of
- cylinders, heads and sectors per track.
-
- 12) Use arrows to select a drive you want to be a partition.
-
- 13) Press the RETURN key and type in a number of sectors, that
- you want to be allocated to the partition. Note, that it is a
- number of real, 512 byte sectors, so if you specify 32767, the
- DOS partition will have 65534 logical, 256-byte sectors.
-
- 14) Press RETURN to confirm the number of sectors or press ESC
- key to cancel.
-
- 15) If you want to have more partitions, repeat the last three
- steps as many as you want.
-
- 16) Press the TAB key and select a partition, that you want to be
- the BOOT partition. If you are the SpartaDOS X user and you want
- to have the CONFIG.SYS on the hard drive, the BOOT partition must
- be D1:, so you should change the physical number of your floppy
- drive to D2: or another.
-
- 17) Press RETURN key to set the BOOT partition.
-
- 18) Press the TAB key to move the cursor to the menu at the
- bottom right corner of the screen.
-
- 19) Select the "Opts" option.
-
- 20) Select the boot type according to your system configuration:
- - "control", if you want to boot up MyDOS (or another DOS) from
- other partition than D1: The interface will take full control
- over the boot process.
- - "pass", if you want to boot up MyDOS (or another DOS) from D1:
- The interface will pass the control over the boot process to the
- operating system. Select this option, if you have any troubles
- with the "controlled" boot up - the interface, taking the control
- over the boot process, uses some hints that may not work with
- some DOSes, cartridges or upgraded (customized) operating
- systems. You MUST select this option, if you are the SpartaDOS X
- user.
-
- 21) Press ESC to exit the "Options" menu
-
- 22) Select the "Write" option to write the new partition table to
- the drive.
-
- 23) Press ESC to return to the main menu
-
- 24) Select the "Soft format" option from the menu. The FDISK will
- attempt to build new directories on the attached partitions.
- Note, that the SpartaDOS 3.2 does not provide such action - to do
- it, you must use a separated formatter, as the P_FORMAT.COM.
-
- 25) Exit the FDISK.
-
- 26) Write the DOS file(s) to the BOOT partition. If you are the
- MyDOS user, select the "H" option from the DUP menu. If you are
- the SpartaDOS 3.2 user, copy the DOS to the BOOT partition and
- use the BOOT command to make the disk bootable.
-
- 27) Press SELECT/RESET to cause the cold boot. The DOS will load
- itself from the drive - the installation process is completed.
-
- Some IDE drives used to clear the BUSY and assert the READY bits
- in their internal status registers *before* the spin-up process
- is finished - the drive looks to be ready, but isn't ready in
- fact and cannot execute any commands (very strange, by the
- way...). To prevent such troubles during power up, the internal
- software waits about 5 seconds before taking any action with the
- IDE controller. This delay is not necessary during the cold boot,
- that has been caused by pressing SELECT/RESET or via OS entry
- RESETCD (¢E477). In such case the internal software uses a fast
- initialization method. However, if you turn the power switch off
- and on very quickly, the initial routines may not recognize this
- boot process as a real power up. As a result, the boot process
- will crash. To prevent such problems, after turning the power
- off, you should always wait 10-15 seconds before turning it on
- again. This time should be sufficient to invalidate internal
- flags, that have been located in RAM.
-
- IV. Keystrokes
-
- SHIFT/RESET disables the drive. The drive will remain spinning,
- but the partitions will not respond to operating system requests
- (error 138). To enable it again just press the RESET key.
- SELECT/RESET forces the cold boot.
-
- V. Write-protection feature
-
- The IDE hard drive interface provides the write-protection
- feature to minimize a risk of accidental data damage caused by
- viruses, damaged software or children. When a partition is
- locked, there's NO POSSIBILITY to write data to this partition or
- unlock it by asserting commands, causing a cold boot or turning
- the power off and on. Damaging a write-protected partition by
- writing accidental data to random memory locations is also
- *practically* impossible - the risk is very small.
-
- VI. Executing non-DOS software with the hard drive
-
- Some software, especially games and demos, have their own disk
- formats and cannot be copied to a partition. However, the IDE
- software provides limited capabilities to execute such programs.
-
- If you selected the "controlled" hard drive boot when
- partitioning the drive and your BOOT partition is not the D1:,
- you may run the non-DOS disk from the floppy drive. To do it,
- insert the disk into the floppy disk drive then press SELECT and
- RESET keys holding down the SHIFT key. The internal software of
- the IDE Interface will pass its initialization routines and your
- computer will boot up from the floppy. The hard drive will be
- "invisible" for the system.
-
- If you want to execute such software from the hard drive, you
- must provide a small partition to use it in such manner. Though
- the D10-D15 partitions are invisible for existing operating
- systems and cannot be accessed by DOS, they may be booted as
- well. When you are partitioning your drive, create a small (up to
- 520 physical blocks) disk, for example D10:. When you complete
- the installation and make the drive work, execute the FHCOPY.COM
- file from the utilities disk, then copy your floppy to the D10:.
- Now execute the FDISK, select the "Partitioning" option from the
- main menu, then press the TAB key twice to move the cursor to the
- menu at the bottom right corner of the screen. Select the "Opts"
- option, then set the "Drive redirection" to D10:. If the
- "controlled" boot-up has been selected, you must change it now to
- the "pass" mode. Write new partition table, exit the FDISK and
- reboot the system - the non-DOS program will load itself from the
- hard drive. To return to the previous configuration, insert the
- utilities disk to your floppy disk drive, reboot the system
- holding down the SHIFT key, then execute the FDISK, reset the
- "Drive redirection" to D1: and "Boot type" to its previous state,
- write the new partition table, exit the FDISK and reboot the
- system.
-
- VII. Dual drive configuration
-
- The IDE drive interface is able to handle two IDE devices
- configured as master and slave drives (please refer the drive
- manual to connect it and set up properly). However, some drives,
- when they are configured to work as the slave device, used to
- wait some seconds before they start spinning. For this reason,
- the Interface DOES NOT INITIALIZE the slave drive during power up
- or reset. It would make little sense, because the drive is not
- spinning (i.e. is not ready) at that time. As a result, the slave
- drive remains not initialized, even if the boot process has been
- finished and the system looks to be ready to use.
-
- If the slave drive have finished the spin-up process, there are
- two ways to make it work properly:
-
- 1) assert the ALL RESET command (see next section), or
-
- 2) force the system to read a sector from any partition, that
- have been allocated to the slave drive - if the drive is ready,
- it will be recalibrated automatically.
-
- Please DO NOT start the operating system from the slave drive
- partitions.
-
- VIII. Software development information
-
- The IDE drive partitions operate as normal floppy drives or
- ramdisks and can be accessed via OS DISKINT (¢E453) and SIOINT
- (¢E459) routines. All the partitions recognize the following
- commands:
-
- 1) Standard subset
-
- R - read a sector - this command reads a specified logical sector
- from a specified partition. It reads ALWAYS THE WHOLE LOGICAL
- SECTOR, i.e. 256 or 512 bytes, according to the current mode and
- regardless of the DBYT value. The sector number is a 24-bit
- value, the most significant byte (now called DAUX3) is located at
- ¢0307 (this byte was unused by the XL OS). Sector numbers less
- than ¢000001 or greater than maximum sector number for the
- specified partition are invalid and will cause the error 144.
-
- P - put a sector - writes data to a specified logical sector on a
- specified partition. There are the same restrictions, as
- mentioned above. This command will return status 144 when
- attempting to execute on a write-protected partition.
-
- W - write a sector - the same, as "P" command.
-
- S - read status block - transfers the 4-byte disk status to the
- memory. The bit of the first byte are as follows:
-
- 7 - not used by the hard drive
- 6 - write protection enabled
- 5 - double density drive (always 1)
- 4 - master present (usually 1)
- 3 - slave present
- 2 - not used by the hard drive
- 1 - not used by the hard drive
- 0 - not used be the hard drive
-
- The second byte provides reversed (eor'ed with ¢FF) value of the
- IDE controller error register. The bits are as follows:
-
- 7 - BBD - Bad block detected
- 6 - ECC - Error correction code (uncorrectable error)
- 5 - NUL - unused, always 1
- 4 - IDNF - ID not found (target sector could not be found)
- 3 - NUL - unused, always 1
- 2 - AC - Aborted command
- 1 - TK0 - Track 0 error (unable to find a valid track 0)
- 0 - DAMNF - Data address mark not found
-
- The normal (default) value of this byte is ¢FF. The next byte has
- a dummy value ¢E0. The last byte of the status block holds the
- number of retries for the software IDE handler in ROM.
-
- N - read configuration - reads the 12-byte PERCOM block to the
- memory. The values returned by a partition are as follows:
-
- 0 - number of tracks (always 1)
- 1 - revision number (¢10 = 1.0)
- 2 - total number of logical sectors, the middle byte
- 3 - total number of logical sectors, the low byte
- 4 - total number of logical sectors, the high byte
- 5 - additional information:
- bit 3 - IDE hard drive partition (always 1)
- bit 2 - double density drive (always 1)
- bit 1 - 8 inch floppy disk drive (always 0)
- 6 - number of bytes per logical sector, high byte
- 7 - number of bytes per logical sector, low byte
- 8 - unused, always ¢FF
- 9 - value ¢49
- 10 - value ¢44
- 11 - value ¢45
-
- The last three bytes contain an identifier of the hard drive type
- ("IDE").
-
- 2) Specific ones
-
- ¢E6 - sleep drive - stops the drives and deactivates their
- internal controllers. See ALL RESET command for the DCB variables
- details.
-
- ¢E7 - all reset - resets, recalibrates and reinitializes both
- hard drives. It is the only way to exit the Sleep mode. This
- command needs the number of any partition stored to the DUNIT
- (¢0301). The master drive must be present while asserting this
- command, otherwise the timeout error will occur.
-
- ¢EC - identify drive - transfers the 512 bytes of data, that
- specify the drive's parameters. The fields are as follows (F =
- fixed value, V = variable, R = reserved, should be zero):
-
- 0 - vendor specific information, bits are as follows:
- 15 - 0, reserved for non-magnetic devices (F)
- 14 - vendor specific (F)
- 13 - vendor specific (F)
- 12 - vendor specific (F)
- 11 - vendor specific (F)
- 10 - vendor specific (F)
- 9 - vendor specific (F)
- 8 - vendor specific (F)
- 7 - removable media device, if 1 (F)
- 6 - removable controller and/or device, if 1 (F)
- 5 - vendor specific (F)
- 4 - vendor specific (F)
- 3 - vendor specific (F)
- 2 - vendor specific (F)
- 1 - vendor specific (F)
- 0 - reserved (R)
- 2 - number of cylinders (F)
- 4 - reserved (R)
- 6 - number of heads (F)
- 8 - vendor specific
- 10 - vendor specific
- 12 - number of sectors per track (F)
- 14 - vendor specific
- 16 - vendor specific
- 18 - vendor specific
- 20-39 - serial number, ASCII characters (F)
- 40 - vendor specific
- 42 - vendor specific
- 44 - number of ECC bytes transferred on LONG
- operations (F)
- 46-53 - firmware revision, ASCII characters (F)
- 54-93 - controller model number, ASCII characters (F)
- 94 - numbers of sectors/interrupt R/W multiples,
- bits:
- 15-8 - vendor specific
- 7-0 - ¢00 = READ/WRITE MULTIPLE not implemented (F)
- ¢01-¢FF = maximum number of sectors that can be
- transferred per interrupt on READ/WRITE MULTIPLE commands (F).
- 96 - reserved (R)
- 98 - capabilities, bits:
- 15 - reserved (R)
- 14 - reserved (R)
- 13 - 1 = standard standby timer values are supported
- 0 = standby timer values are vendor specific (F)
- 12 - reserved (R)
- 11 - 1 = IORDY supported (F)
- 0 = IORDY may be supported (F)
- 10 - 1 = IORDY can be disabled (F)
- 9 - 1 = LBA supported (F)
- 8 - 1 = DMA supported (F)
- 7-0 - vendor specific (F)
- 100 - reserved (R)
- 102 - PIO data transfer cycle timing (F)
- 104 - DMA data transfer cycle timing (F)
- 106-511 - reserved
-
- All values are in standard low/high convention. Some parameters
- are defined as a string of ASCII characters. For the string
- "Copyright", the character "C" is the first byte, "o" is the
- second byte etc. When such fields are transferred, the order of
- transmission is:
-
- - the 1st character ("C") is on bits 15 through 8 of the 1st word
- - the 2nd character ("o") is on bits 7 through 0 of the 1st word
- - the 3rd character ("p") is on bits 15 through 8 of the 2nd word
- - the 4th character ("y") is on bits 7 through 0 of the 2nd word
- etc.
-
- Note, that the DMA transfers, although may be supported by the
- drive itself, may not be supported by the current version of the
- interface's hardware. Please also refer the SLEEP DRIVE command
- to get an information about the DCB variables.
-
- ¢EE - force media change - forces the interface to re-read the
- partition table from the drive.
-
- All other commands will cause error 139 (negative acknowledge).
- Note, that the software does not provide a FORMAT DISK command -
- it hasn't been implemented to prevent an accidental data damage.
- The drive must be formatted using a separated program.
-
- Operating system developers should note, that the internal
- software of the IDE Interface changes the DUNIT (¢0301) to the
- BOOT partition number during boot up.
-
- IX. Memory usage
-
- The Interface's internal software uses the following RAM
- locations: ¢01 and ¢34-¢3C. The PDVMSK (¢0247), PDVRS (¢0248) and
- DCB variables (especially DAUX3 ¢0307) should be used only in
- their proper functions (please DO NOT use them as temporary data
- registers!). The ¢0400-¢06FF area should also remain intact
- during the cold boot.
-
- X. Error messages
-
- You can get the following error reports from the IDE drive:
-
- 138 - Timeout error - attempting to read or write data to a
- partition, that is physically allocated to the slave drive, while
- the slave drive is busy, not ready or does not exist at all; or
- attempting to assert the ALL RESET command, while the master
- drive is not present. It may occur, if you accidentally
- disconnect the master drive or disconnect the slave drive without
- reconfiguring your system. It may also indicate a damaged
- partition table - please reboot your system. If this action
- doesn't cause any effect, you must use the FDISK to repair the
- partition table. See also section VII. - "Dual drive
- configuration".
-
- 139 - Invalid command
-
- 144 - Device done error:
-
- 1) the software attempted to write data to a write-protected
- partition.
-
- 2 the software attempted to read or write data outside of the
- limits, those are valid for the partition.
-
- 3) there is a bad sector on the partition. Please assert the "S"
- command to get the value of the internal IDE error register.
-
- 4) the interface's software is unable to handle your drive.
- Please run the FDISK and select the "Surface test" from the main
- menu. If the test fails and you know, that your drive is in good
- condition (no bad blocks) for sure, please assert the IDENTIFY
- DRIVE command (from a BASIC, for example), copy the buffer to a
- file and send the file to us.
-
- Konrad M.Kokoszkiewicz (KMK)
- E-mail: conradus@plearn.edu.pl
-
- -- - --- -- -----------------------------------------------------
- CHOSNECK team contact us:
- growin' up with atari community greymsb@poczta.fm
- --------------------------------------------------- -- - --- ----
- </frame>
- </body>
-