@BLKTCON0
First, thanks for the reply and the tutorial.
You're right. Forgot to mention I was using a 3.1 ROM.
After reading your reply, I tried the switch again.
I also applies a bit more pressure with the heel of my hand and was rewarded with a nice "chunk" sound as the adapter seated in properly into the socket. That may have been the root cause of my initial problems. Those machined pins require a bit more pressure than I was expecting.
...and hopefully they won't widen the receptacles in the socket beyond being able to accept normal thin-pin chips again! Using an intermediate socket, if possible, to take all the stress from the machined pins is always a good idea.
BTW, all changes in switch position and plug in location were done with the computer OFF. Also studying the theory behind this switch from a file in aminet shows only the sel0 and sel1 are being switched so there shouldn't be a problem with voltages going to ground.
Yes, of course, but you mentioned "orientation" which I suppose means you also tried installing the switch rotated by 180 degrees. Of course if you didn't change the actual CIA chip orientation (i.e. it remained correctly orientated with respect to the underlying motherboard socket) then yes, much less to worry about.
Trying the switch in the outer set or pins resulted in the Insert disk screen on both positions of the switch.
Moving the switch connector to the inner set of pins results in being able to boot from the "external" drive but the internal drive is nowhere to be found!
Switching the switch to (what I guess is) the default position, the internal disk boots up just find AND the external drive is found.
So, it does sound like the switch is sort of working. Drives can be switched, but by booting from the external drive, with the switch in circuit, results in the "loss" of the internal drive.
Weird!
Not really weird, that's why I insisted on calling it a "boot selector" rather than an actual drive switcher. As I said, this switcher is not equipped for proper drives switching (unless the internal drive happens to be a high-density FB-357A one, which rarely is the case in an A500 as it's strictly a DIY job).
The reason it won't properly swap drives is trackdisk.device unit detection.
Since ALL Amigas are expected to have a 3.5" DD unit installed as df0: at the very minimum, trackdisk.device won't bother requesting the drive type.
(with KS 2.x and 3.x which supports HD drives it actually will, but just to check if it's an HD FB-357A drive with an HD disk inserted. If a regular FB-354 or other plain DD drive is installed, trackdisk.device won't lose any sleep over lack of drive ID and (correctly, in logical terms) assume it's a DD drive.)
For the external drive however, the ID sequence is mandatory (even with KS 1.x) as it can be either a 5.25" or 3.5" (DD) drive.
Therefore all Amiga external DD drives have suitable circuitry (the circuitry is not on the drives themselves, those are bog standard mechanisms. It's on the small interfacing board every external drive enclosure has) to correctly ID themselves upon request (the ID sequence is fully detailed in the Hardware Manual). Some use a NAND gate, some use a transistor, some might use a serial shift register, but the net result is the same: a bit sequence which tells trackdisk.device "hello, I'm a 3.5" DD drive" etc.
So now you can appreciate the complexities arising from simply switching SEL0 and SEL1:
The external drive (which now responds to SEL0) does have the required ID circuitry which, incidentally, is no longer required. It still reports itself as a 3.5" DD drive, but that's what KS 3.1 would anyway have assumed.
The internal drive (which now responds to SEL1) must correctly report itself (as it's now considered an external drive), but sadly lacks the necessary circuitry (unless it's an FB-357A).
So you must re-implement the ID circuitry.
If you take a look at the
A2000 schematics, the A2000 motherboard (which must internally support an "external" drive and thus incorporate the ID circuitry to keep trackdisk.device happy) uses the NAND gate approach to ID the second drive:
J301, when jumpered, passes the ID bit sequence onto the RDY line as the output of a NAND buffer, with one input being the inverted _SEL1 signal (aka SEL1) and the other input being the Q output of the motor flip-flop.
Gary outputs the motor control signal as active high (MTR0 instead of _MTR0, so MTR0 corresponds to Q').
But with some simple boolean logic we have:
SEL1 NAND Q translates to:
(here SEL1 refers to SEL0 of course, and Q' is MTR0 so Q is _MTR0)
(SEL0 * _MTR0)' = (by De Morgan's laws)
= SEL0' + (MTR0')' = _SEL0 OR MTR0
which incidentally happen to be the exact signals available on Gary.
So grab yourself a small piece of veroboard, solder an
OR gate there (with appropriate decoupling cap), wire appropriately to Vcc and GND, wire 3 of the 4 gates to GND and use the 4th gate to implement
_SEL0 OR MTR0
_SEL0 is Gary pin 16
MTR0 is Gary pin 46
and wire the OR gate output to the _RDY line, which is on ODD CIA (U7) pin7.
This will provide the missing circuitry from the "switch" you bought so it fully swaps the drives.