Build your own DD-HD switch for the Atari ST/STE

1997-1998 Martin Graiter

(Very small revisions by Vezz)



So you want to use 1.44Mb floppies and your old 720Kb floppies as well ? No problem ! Here's a one-chip solution that takes care of things for you ! Before you start you should consider the following :


If you don't feel confident with an Ohm-meter and a soldering iron or if you're not familiar with schematics, then don't attempt this project. There is * no * shame in not being skilled with everything on earth. I also sell ready-built DD-HD circuits, built and tested to function. Maybe you should rather buy one and then only solder 5 wires instead of going through all the moments of measuring, soldering and fault-searching ?


This modification is of course unnecessary for the MegaSTE/TT, and Falcon, because they can already deal with HD floppies "from factory". In order to use HD floppies you MUST have a 1.44MB (sometimes referred to as 2Mb) diskdrive. The old SF314 won't do the job. Teac's FD235HF-drives are suitable, as is Sony's model MPF520-1. There are other drives too, but I can't name them all here.


If the diskdrive outputs a High Density Detect (HDD) signal on pin 2 of it's bus, then it's suitable ! This signal has so far (in my experience) always been positive logic (active high). Means that when you have a DD disk in the drive, the output on pin 2 will be LOW (0V). When an HD disk is inserted the signal will shift to HIGH (+5V).


You also have to have a suitable Floppy Disk Controller (FDC) chip in your machine. If your chip has the marking "WD1772 02-02" it is OK. Also if the marking is "Atari XXXXXX (lots of numbers)" it will work. But if your chip says "VLSI" or "WD1772 00-00" it will most likely * NOT * function. In that case I suggest you swap with someone, or buy another FDC. Additionally you need a program that will change the step-rate to 6ms (milliseconds), Fastcopy, Bootsie, Flopcontrol are such programs, but there are others too. I patched my TOS 2.06 so that the default step-rate is 6ms instead of 3ms. No program needed after that.


And finally you need HD disks. PLEASE don't use your old 720Kb disks for this ! Some people have drilled holes in their DD disks as to fool the diskdrive to format them at 1.44Mb. BUT this is an extremely bad idea!!! You'll be sorry you did it, I promise ! And don't go the other way either! I don't want to go into discussions on why or what happens, but you'll regret this too ! Disks are cheap, just buy a pack (or loan one from your buddy). And now some theory :


The WD1772 chip is designed to work at 8MHz, but thanks to the good quality of the chips produced this can be greatly overdriven. Most WD1772:s will happily hop along at 16MHz, and even at 32MHz ! In order to run 1.44Mb disks we will overclock the WD1772 to double speed, 16MHz. Since we're interested in using the old 720Kb disks as well, we'll want to switch alternatively between 8 and 16 MHz. That can of course be realized by hand switching, but more elegant is to perform this automatically. Which is precisely what we'll do here !


If you study and comprehend my schematics you will probably figure out how to be able to use even 2.88 Mb disks.... I didn't bother, since 1.44 disks is the standard nowadays.


A positive effect of this clock doubling is that the data transfer rate between the DMA and the FDC also doubles ! However, all timings are half as long and so is the steprate. Instead of getting 3ms we get 1.5ms when running at 16 MHz. To rectify this we set the steprate to 6ms, which gives 3ms in reality (since everything is halfed at 16MHz). You follow? It doesn't matter that the steprate becomes 6ms when running at 8MHz, it just makes the drive somewhat noisier.


We also need to break the connection of pin 18 of the FDC, (which is CLK IN,) from the permanent 8MHz feed and instead feed the pin with the output from our circuit.


In order to perform an automatic switching between 8MHz (720Kb DD-disks) and 16MHz (1.44Mb HD-disks), depending on what types of disks we put in our A and B drives, we will utilize the services of a 74LS151 chip.




General pinout for the 74LS151:

           74LS151
         +---\_/---+                         D0-D7 are data INPUTS
      D3 |1      16| +5V
      D2 |2      15| D4
      D1 |3      14| D5
      D0 |4      13| D6
DATA OUT |5      12| D7
DATA OUT |6      11| DATA SELECT A
  STROBE |7      10| DATA SELECT B
     GND |8       9| DATA SELECT C
         +---------+




This chip has 3 control inputs, A,B,C, that will determine which of eight input lines will "come out". We feed half of the input lines with 8MHz and the other half with 16MHz. The control lines will be High Density Detect from drive A (HDD0) and High Density Detect from drive B (HDD1).


We will also use the signal Drive Select 1 (DS1), which activates drive B. We needn't use Drive Select 0 (DS0) since we simply assume that DS0 should count as active if DS1 isn't. Note that this signal is negative logic (active low).


Next step will be to make a truth table, as to determine which inputs shall be fed 8MHz and which 16MHz. It looks like this:


A=DS1                     C B A
B=HDD0                    ------+
C=HDD1                    0 0 0 |D0 --> 8
                          0 0 1 |D1 --> 8
                          0 1 0 |D2 --> 8
                          0 1 1 |D3 -->16
                          1 0 0 |D4 -->16
                          1 0 1 |D5 --> 8
                          1 1 0 |D6 -->16
                          1 1 1 |D7 -->16


The only thing left is to tie STROBE to GND (to enable the chip) and we're done ! We substitute the D0-7 markings with 8 and 16MHz respectively, we do the same with the ABC select lines, only here we put in the names of our signals as above to the left.


That's it!




Logical schematic of the DD-HD switching:


                                    74LS151
         +-------+                 +--------+
         | 16MHz |------>1,12,13,15|        |
         +-------+                 |        |
                                   |        |
         +-------+                 |        |
         |  8MHz |-------->2,3,4,14|        |
         +-------+                 |        |
                                   |        |
                  DS1----------->11|        |
HDD0--------+------------------->10|        |
            |     HDD1-----+----> 9|        |
           _|_            _|_      |        |
          | R |          | R | +--7|STROBE  |5-->CLK OUT
          |2K2|          |2K2| |   |        |
          |   |          |   | |   +--------+
          +---+          +---+ |     8    16
            |              |   |     |     |
            +--------------+---+-----+GND  +5V




After theory we only need to realize the circuit in real life. You will find 16 MHz on pin 39 of the SHIFTER (not on the STE !) and 8MHz in the empty hole where pin 18 of the FDC used to be. DS1 is found on pin19 of the PSG (Yamaha YM2149 or General Instruments GI, AY-3-8910). Ground and +5V can be found everywhere on the motherboard.




Connections in the function as DD-HD switcher:


          74LS151                            16MHz quartz crystal
        +---\_/---+                             +---------\
  16MHz |1      16| +5V                      NC |1      14| +5V
   8MHz |2      15| 16MHz                       |         |
   8MHz |3      14|  8MHz                       |         |
   8MHz |4      13| 16MHz                       |         |
CLK OUT |5      12| 16MHz                       |         |
     NC |6      11| DS1                         |         |
    GND |7      10| HDD0                    GND |7
8|-->16MHz
    GND |8       9| HDD1                        \---------/
        +---------+


If you have an STE model you will also have to add a quartz crystal, this because the STE doesn't have a good enough 16MHz signal for our purposes. Easiest is to use the type with 4 pins, it is defined as above. The numbering of the legs is correct, even though there are only four of them !


A good general advice is to keep the connecting lines as short as possible, also determine exactly where you'll put our little circuit before you start connecting things. And before we get our hands on the actual making of the switcher, we have to consider the signals HDD0 and HDD1.


The HDD0 signal has to be connected to the second wire of the floppy ribbon cable. The first cable is normally coloured red or dotted red. You can carefully cut free about 2cm (one inch) of wire no 2 from its "neighbours".


Then you can cut it off at the side closest to the motherboard connector. Peel off the plastic isolator a couple of mm on the end. This naked thread you'll solder to the HDD0 wire coming from our little board. It is good practice to isolate the connection with some shrink-tube (I am not sure this is the correct English word ? I'm talking about a small hose made of a material that shrinks when you heat it.)


          ______________________________________________
|       4|____________________________________________4_|        |
|       3|____________________________________________3_|        |
|       2|_____|_CUT HERE!|___________________________2_|        |
|       1|____________________________________________1_|        |
+--------+                                              +--------+
Motherboard                                              Floppy
connector                                                connector


Alternatively you can connect to this wire by going to the underside of the motherboard. There you'll seek up the solder joints for the floppy cable. It will look something like this :


                                []()()()()()()()()()()()()()()()()
                        pin 2-->()()()()()()()()()()()()()()()()()


You will recognize pin 1 by the rectangular pad, no 2 is right below no 1. If you decide on this solution you shall not cut the wire as described above !


It is important that you lead your wire to the upper (component) side without using holes that will accomodate screws or plugs when the case is reassembled !


The HDD1 signal is to be connected to pin 7 of the connector for the external drive. This pin is grounded and you'll need to disconnect it from ground. You can do that by either cutting it off and bending up what's left, as depicted in the drawing below. Or, you can play dentist and pull it out from it's hole on the underside. This means you'll have to suck the hole clean from solder and be sure that the pin will move freely !


You can also keep your soldering iron to the hole and then pull the pin out from the other side. Of course, the rest of the pin must remain in the circular connector !


      Right side view:                  Outer view:
              ______________||
             |--------------||          11       10
             |--------------||
        +----|              ||       9                8
        ||   |              ||
       _||_  |     CUT!     ||     7     13     12     6
      ||  |  |    /         ||
      ||  |  |   /          ||      5       14        4
      ||  |  |__/___________||
      ||__|___|| |     |    ||         3          2
      ||      ||_|     |____||               1
      ||                    ||


Should you decide that you'll never need to connect an external (B:) 1.44 drive to your machine, well, then there is no need to do this at all ! The HDD1 signal is already defined as LOW through the 2K2 resistor connecting it to ground. In fact, if you won't connect any 1.44 diskdrive as B: you can just tie HDD1 to ground, with or without any resistor. You will still be able to use 720Kb diskdrives on B: if you want to.


Those who have the * good old * 520 ST without internal drive will in any event have to do the above mentioned modification with the HDD0 connected to pin 7 ! Should there be need for an HD drive as B:, then an extra hole will have to be drilled in the 520 ST case and an extra wire drawn from B:s pin 7 to HDD1.


These are the appropriate connections to make if you want to make your own cable from the external circular connector to the rectangular Shugart connector on the floppy itself :


External circular             Shugart
connector                     connector
01.  Read Data-----------------30. RDT
02.  Side 0 Select-------------32. SSL
03.  GND----------------------- 1,3,5,7,9... (odd wires are GND)
04.  Index Pulse--------------- 8. IDX
05.  Drive 0 Select------------10. DS0
06.  Drive 1 Select------------12. DS1
07.  High Density Detect------- 2. HDD
08.  Motor On------------------16. MON
09.  Direction In--------------18. DIR
10.  Step----------------------20. STP
11.  Write Data----------------22. WDT
12.  Write Gate----------------24. WGT
13.  Track 00------------------26. TR0
14.  Write Protect-------------28. WPT


And now, let's get hands on the very DD-HD switcher ! If you plan to build this on a veroboard, I'd suggest the following approach:



VERSION FOR THE ST RANGE, NOT FOR THE STE!


What you need: 1*74LS151 chip
               1*220 ohm resistor
               2*2.2 Kohm resistors
               1*3mm LED

Cut a piece of veroboard               This is the intended
that is 9 modules high                 component placement:
and 6 modules wide.

                                                             |+5V
  6   5   4   3   2   1                  1   2   3   4   5   |6
+---+---+---+---+---+---+              +---+---+---+---+---+-|-+
| O | O | O | O | O | O |         16MHz| O   O----\_/----O   O |
|   |   |   |   |   |   |              |     |           |  _|_|
| O | O | O | O | O | O |              |     O           O |   |
|   |   |   |   |   |   |              |     |           | | R |
| O | O | O | O | O | O |              |     O           O |220|
|   |   |   |   |   |   |              |     |           | |Ohm|
| O | O | O | O | O | O |          8MHz| O   O           O |___|
|   |   |   |   |   |   |              |     |           |   | |
| O | O | O | O | O | O |              |     O           O   O |
|   |   |   |   |   |   |              |     |           |     |
Anode
| O | O | O | O | O | O |              |     O           O   O |
(+)
|   |   |   |   |   |   |              |     |           | (LED)
| O | O | O | O | O | O |              |     O           O   O |
(-)
|   |   |   |   |   |   |              |     |           |     |
Cathode
| O | O | O | O | O | O |              |     O-----------O     |
|   |   |   |   |   |   |              |      /-----\R2K2 ___
|R2K2
| O | O | O | O | O | O |       CLK OUT| O   O   O   O   O___O |
+---+---+---+---+---+---+              +---+---+---+---+-------+
                                             |  DS1 HDD0 HDD1|
                                          GND|               |GND
   UNDERSIDE                                   UPPER SIDE


The two 2K2 resistors will be standing up, the LED and it's 220 resistor aren't necessary for the function, but will indicate that you've found +5V and GND (by emitting light) and it will impress your friends !


But, no point in placing out the components yet, first you'll have to prepare your veroboard. You will start by cutting lanes at appropriate locations. When all up-down DISconnections are made, we will also need to make left-right CONnections. We will achieve that without using one single wire !


Preparation of the underside:


Start disconnecting the up-down    Continue by inserting the chip
lanes by cutting traces in them    and making the sideways connec-
as shown in the left figure.       tions by soldering drops of
                                   resin across the dividing lines

  6   5   4   3   2   1                    6   5   4   3   2   1
+---+---+---+---+---+---+                +-----------+-----------+
| O | O | O | O | O | O |                | O   O   O | O   O   O |
+===|===|===|   |===|===|                +-----------+   +-------|
| O | O | O | O | O | O |                | O   O   O   O | O   O |
|   |===|===|===|   |   |                |   +-----------+       |
| O | O | O | O | O | O |                | O | O   O   O   O   O |
|   |===|===|===|   |   |                |   +-----------+       |
| O | O | O | O | O | O |                | O   O   O   O | O   O |
|===|   |   |   |===|===|                |---+           +-------+
| O | O | O | O | O | O |                | O | O   O   O | O   O |
|   |===|===|===|===|   |                |   +-----------+---+   |
| O | O | O | O | O | O |                | O | O   O   O | O | O |
|===|===|===|   |===|   |                +---+-------+   +---+   |
| O | O | O | O | O | O |                | O | O   O | O | O | O |
|   |===|   |   |   |   |                |   +---+   |   |   |   |
| O | O | O | O | O | O |                | O | O | O | O | O | O |
|   |   |   |   |   |   |                |   |   |   |   |   |   |
| O | O | O | O | O | O |                | O | O | O | O | O | O |
+---+---+---+---+---+---+                 ---+---+---+---+---+---+


Insert also the other components and make sure you're not cutting off the long wires on the ends of the resistors which will go to GND and +5V on the motherboard. See the figure with the component placement. You will now need to determine where on your motherboard you'll be placing the DD-HD switcher. Best is a location close to the FDC. The signals CLK OUT, 16MHz and 8MHz should be as close as possible, as to keep wires short.


Here is a suggestion for the placement in the Mega ST models :


       ============
        |   ||   |  External floppy connector
        |   ||   |
        |___||___|= <--bent out pin 7
         |||  |||      HDD1
         --------                            J4         ____ R28
                                              O     ---(____)---
                                           GND \        O O O
                                                \         |GND
                                                 \        |
                                                  |       |
                                                  | | |DS1|
                                                +-------------+
                                                | O O O O O  O|CLK

                  CLK                           | _ +-----+   |OUT
+--------------------||------+               LED|(_)| 74  |   |
|28                  18    15|                  |   | LS  |   |
|   O                        |                  |_|_| 151 |   |
\  8MHz  WD1772 02-02        |                  || ||     |  O|8Mz
/(under)   (FDC)             |   +------------+ ||R||     |   |
|                            |   \    7406      ||_||     |   |
| 1                        14|   /              | | |     |  O|16
+----------------------------+   +------------+ +-|-+--^--+---+Mhz
                                                _ /  +---+    _
                                               (_)---|L46|---(_)
+----------------------------------------+     +5V   +---+
|40                                    21|          +--39---------
|                                        |          |40  16MHz
\              DMA                       |          |
/                                        |          \      Shifter
|                                        |          /
| 1                                    20|          |
+----------------------------------------+          | 1
                                                    +------------



VERSION FOR THE STE RANGE!
(can also be used on ST machines!)


This version has simply been "stretched" in order to accomodate an added component, the quartz crystal. On most STE: s you can't utilize the 16MHz signal present on the motherboard. Nothing prevents this design from working on an ordinary ST as well. It's just a matter of economy, the crystal is an extra cost.


What you need: 1*74LS151 chip
               1*220 ohm resistor
               2*2.2 Kohm resistors
               1*3mm LED
               1*16MHz quartz crystal

Component side:
                             |+5V
                             |
       +---------------------|---------------------+
       |     O----\_/----O   O                     |
       |     |           |  _|_                    |
       |     O           O |   |   +---------------\
       |     |           | | R |   | o           o |
       |     O           O |220|   |NC          +5v|
       |     |           | |Ohm|   |               |
   8MHz| O   o  74LS151  O |___|   |               |
       |     |           |   |     |     16MHz     |
       |     O           O   O     |               |
       |     |           |         |               |
       |     O           O   O     |               |
       |     |           | (LED)   |               |
       |     O           O   O     | GND      16MHz|
       |     |           |         | o           o |
       |     O-----------O         \---------------/
       |      /-----\R2K2 ___                      |
CLK OUT| O   O   O   O   O___O                     |
       +---------|---|---|-------------------------+
             |  DS1 HDD0 HDD1|
          GND|               |GND


For this version of the DD-HD switcher we need a somewhat bigger veroboard, 9*11 modules (holes). We will prepare it in similar manner to the previous design, by cutting DISconnections on the vertical lanes:


        11  10   9   8   7   6   5   4   3   2   1
       +---+---+---+---+---+---+---+---+---+---+---+
       | O | O | O | O | O | O | O | O | O | O | O |
       |   |   |   |===|   |===|===|===|   |===|===|
       | O | O | O | O | O | O | O | O | O | O | O |
       |   |   |   |===|   |   |===|===|===|   |   |
       | O | O | O | O | O | O | O | O | O | O | O |
       |===|===|===|===|===|   |===|===|===|   |   |
       | O | O | O | O | O | O | O | O | O | O | O |
       |   |===|===|===|===|===|   |   |   |===|===|
       | O | O | O | O | O | O | O | O | O | O | O |
       |   |   |   |   |   |   |===|===|===|===|   |
       | O | O | O | O | O | O | O | O | O | O | O |
       |   |   |   |   |   |===|===|===|   |===|   |
       | O | O | O | O | O | O | O | O | O | O | O |
       |   |   |   |   |   |   |===|   |   |   |   |
       | O | O | O | O | O | O | O | O | O | O | O |
       |   |   |   |   |   |   |   |   |   |   |   |
       | O | O | O | O | O | O | O | O | O | O | O |
       +---+---+---+---+---+---+---+---+---+---+---+


Next step is to make horizontal CONnections between the lanes. You will insert the components from the other side before you go about it. The modules should have connections as in the drawing below:


         11  10  9   8   7   6   5   4   3   2   1
       +-------------------------------+-----------+
       | O   O   O   O   O   O   O   O | O   O   O |
       |           +---+   +-----------+   +-------|
       | O   O   O | O | O | O   O   O   O | O   O |
       |           +---+   |   +-----------+       |
       | O   O   O   O   O | O | O   O   O   O   O |
       +-------------------+   +-----------+       |
       | O   O   O   O   O   O   O   O   O | O   O |
       |   +---------------+---+           +-------+
       | O | O   O   O   O | O | O   O   O | O   O |
       |   |               |   +-----------+---+   |
       | O | O   O   O   O | O | O   O   O | O | O |
       |   |               +---+-------+   +---+   |
       | O | O   O   O   O   O | O   O | O | O | O |
       |   |                   +---+   |   |   |   |
       | O | O   O   O   O   O | O | O | O | O | O |
       |   |                   |   |   |   |   |   |
       | O | O   O   O   O   O | O | O | O | O | O |
       +---+-------------------+---+---+---+---+---+


It is advisable to measure between the "fields" with a resistance meter, to make sure that there are no connections where there shouldn't be ! Here you won't have to connect a 16MHz wire to the motherboard, since that signal is generated "on board".


After you've assembled the veroboard, you'll have to make connections to the motherboard too.


Placement in an STE :


If you place your switcher just above the FDC chip, you'll have easy access to all relevant solder points on the motherboard. You will find a nice hole for your DS1 wire on the rightmost (no 1) hole of W300. There will also be a convenient via just to the right of C305 where you can take your 8MHz signal. GND and +5V can be taken from the proper sides of the capacitors C303 and C304. GND is also found on pin 14 of the FDC.


============
|   ||   | External floppy connector
|   ||   |
|___||___|= <-- bent out pin 7
  |||  |||       (HDD1)
  --------
                         |
                 +-+-u-+-|-------+
                   | |   |   +----\|
                   | |   ||| |    ||                GND|C303
                   |o|   ||| |    ||                   |
                   | |   | _ |    ||                  +-+ +-------
                   | |   |(_)|    ||                  | | |74LS244
                   | +---+   \----/|                  +-+ |  U307
                   |oooooo         |                   |  +-------
      GND _ +5V    +---------------+                +5V|
   C304 ---(_)---
               +--------------+ +14--------------------------+
               |  7406        / |GND                        1|
               |  U305        \ |                            |
               +--------------+ |        WD1772 02-02        /
                                |          (FDC)             \
      |                         |                            |
      |                         |15    18                  28|
      |                         +------||\-------------------+
     2|= HDD0    DS1               _     |<--Cut this track,
______|           |            ---(_)--- /   or bend out pin 18!
^       W300 O O O            C305     o<--8MHz
|       W301 O O O
|
|
The floppy ribbon base
on the motherboard.


You will also need to configure your Teac drive so that it appears correctly to your switcher. Here are some of the jumpers on various revisions of the FD235-HF:


1)   DS0 DS1
    +---+
    | O | O
    |   |
    | O | O
    +---+

2)
    +-------+
    |O     O| HH0
    +-------+
    +-------+
    |O     O| OP
    +-------+
     O     O  LH1
     O     O  HH1
     O     O  D1
    +-------+
    |O     O| D0
    +-------+

3)  +-------+
    |O     O|
    +-------+
    +---+
    | O |  O
    |   |
    | O |  O
    +---+
    +---+
    | O |  O
    |   |
    | O |  O
    +---+




This project is " Bed & Breakfast ware". I expect you to accomodate me for one night and one breakfast should I decide to visit your town. (I like to travel) Send me a postcard with your name and adress if you use it in your computer. Email is nice too, but postcards are preferred ! Commercial use is granted as long as a licencing fee is payed to me.




Martin Graiter
Majstσngsgatan 9E
SE-414 72 G÷teborg
Sweden, Europe

graiter@starmail.com



This was included on
ST Hardware Hacks Page
http://come.to/atarihacks.com
Maintained by Vezz
vezz@geocities.com




Edito Rubriques habituelles Planè Atari Internet Techniques et programmation Interviews Jeux Vidéo Humour Musique Chroniques, etc. Divers