Chinon HD drive won't read HD floppies?

  • Thread starter Thread starter ptp170
  • Start date Start date
  • Replies Replies 54
  • Views Views 7660
Are you positive about that? As far as I remember, the ID stream of a DD drive is just zeroes, i.e. the drive doesn't even need to know about/have this ID mechanism, because, by default, a drive won't change the state of the READY signal when pulsing SELECT while the MOTOR line is not asserted.

The bitstream with any plain (ID-unaware) drive connected would be identical to no drive connected at all, that is all 1's, for the very reason you just mentioned.
RDY is active low - so the CIA will keep it high (=1) until something connected to it signals by driving it low (=0). So both no drive at all AND a connected but detection-unaware drive would, as you correctly state, leave RDY untouched, resulting in a stream of 1's.

An easier argument: If it was as you say, then the separate DD-ID circuitry would not be required for external DD drives, nor would e.g. (on the A2000) the J301 jumper be needed to enable detection of a DD drive as df1:

If you take a look at the A2000 schematics, you can see that all J301 does is bridge the ID circuitry to the RDY line.
With J301 closed, the RDY is fed: ~(~SEL_1 & Q) = SEL_1 || ~Q
Now before the ID detection routine enters the bitstream-reading loop, MTR is driven high and SEL_1 low, then in the main loop before each reading of RDY a high to low transition of SEL_1 is executed, resulting in a low to high transition on U108's clock input. This latches the state of MTR into U108's D input, and Q = D, therefore Q becomes MTR each time the loop is executed and since MTR is not changed throughout the loop it remains fixed to its initial high state.
Thus, right before RDY is read, Q = high = 1 and SEL_1 = low = 0, and thus RDY = SEL_1 || ~Q = 0 || 0 = 0 and therefore we get a stream of 0's as we indeed should for a 3.5" DD drive.

But the same procedure for a plain drive as unit 0 will yield a stream of 1's. A way to resolve this is to make an assumption on the drive type, the natural one being it's a 3.5" DD one as all pre-HD Amigas came with one installed anyway.
 
I've locked up my man cave for tonight but I'm curious as to your line of thought!

- - - Updated - - -

The plot thickens!

http://mail-index.netbsd.org/amiga-dev/1994/04/11/0018.html

- - - Updated - - -

And further still!

http://www.amiga.org/forums/archive/index.php/t-19858.html

There are two possible ways to read the IDs table - one is the inversion of the other. Both are correct depending on your view of what "read the state of the RDY signal" means.
This can be done either in the high/low mentality or in the logic state mentality.

Since RDY is an active low signal (-) read through the positive logic CIA (+) the composition is (-) and therefore you read 1's when it is inactive.
(this would be a technician's preferred interpretation)

But if you choose to interpret 'state of RDY' in the logic sense, that is true for active and false for inactive, then you end up with 0's when it is inactive.
(this would be a programmer's preferred interpretation)

So, the table can be either:

$0000 0000 = nothing
$FFFF FFFF = 3.5" DSDD disk in drive
$AAAA AAAA = 3.5" DSHD disk in drive
$5555 5555 = 5.25" DSDD disk in drive

or

$FFFF FFFF = nothing
$0000 0000 = 3.5" DSDD disk in drive
$5555 5555 = 3.5" DSHD disk in drive
$AAAA AAAA = 5.25" DSDD disk in drive

So, you just throw in a 3.5" DSDD disk to determine which of the two versions of the table your software follows, then you know how to interpret the other numbers as well.

EDIT: These tables were based on info from the Hardware Reference Manuals which appears to be incorrect. Apparently the table should be (non-inverted, true RDY state approach):

$FFFF FFFF = no drive connected
$0000 0000 = 3.5" drive (DD or HD) with no disk in it OR 3.5" drive (DD or HD) with a DD disk in it
$AAAA AAAA = 3.5" HD drive with an HD disk in it
$5555 5555 = 5.25" DSDD disk/drive
 
Last edited:
Given the two links I've posted, I'm wondering it this is a kickstart/software issue? The one difference is that I'm using AmigaKit 3.1 ROMs and the last machine was 3.0...

Isn't the disk.resource (and trackdisk.device?) library located in the ROM? Maybe AmigaKit's included version has a bug in it? I haven't got any 3.0 ROMs to try it with.
 
Last edited:
I have 3.1 roms in my A1200, they're from Amigakit (the ones before the blue sticker). My HD drive works O.K.
 
I've locked up my man cave for tonight but I'm curious as to your line of thought!

- - - Updated - - -

The plot thickens!

http://mail-index.netbsd.org/amiga-dev/1994/04/11/0018.html

- - - Updated - - -

And further still!

http://www.amiga.org/forums/archive/index.php/t-19858.html

There are two possible ways to read the IDs table - one is the inversion of the other. Both are correct depending on your view of what "read the state of the RDY signal" means.
This can be done either in the high/low mentality or in the logic state mentality.

Since RDY is an active low signal (-) read through the positive logic CIA (+) the composition is (-) and therefore you read 1's when it is inactive.
(this would be a technician's preferred interpretation)

But if you choose to interpret 'state of RDY' in the logic sense, that is true for active and false for inactive, then you end up with 0's when it is inactive.
(this would be a programmer's preferred interpretation)

So, the table can be either:

$0000 0000 = nothing
$FFFF FFFF = 3.5" DSDD disk in drive
$AAAA AAAA = 3.5" DSHD disk in drive
$5555 5555 = 5.25" DSDD disk in drive

or

$FFFF FFFF = nothing
$0000 0000 = 3.5" DSDD disk in drive
$5555 5555 = 3.5" DSHD disk in drive
$AAAA AAAA = 5.25" DSDD disk in drive

So, you just throw in a 3.5" DSDD disk to determine which of the two versions of the table your software follows, then you know how to interpret the other numbers as well.

Well a DD disk produces $00000000 so in that case this meaning that $55555555 is actually correct for HD 3.5" floppy.. Ignore!
 
Last edited:
Well a DD disk produces $00000000 so in that case this meaning that $55555555 is actually correct for HD 3.5" floppy..

According to the Hardware Manual, yes.
The table it lists indicates:
$0000 0000 --> nothing
$FFFF FFFF --> 3.5" DSDD
$AAAA AAAA --> 3.5" DSHD
$5555 5555 --> 5.25" DSDD

But in the link you posted someone wrote this comes from the developer includes:

DRT_EMPTY EQU $FFFFFFFF
DRT_AMIGA EQU $00000000
DRT_150RPM EQU $AAAAAAAA
DRT_37422D2S EQU $55555555

Which agrees to the HW manual for 3/5" HD/5.25" but does not agree for 3.5" DD/nothing.

I don't know if the hardware manual got it wrong, the same values are present in both the 2nd and the 3rd release.
But according to the includes equates, you're of course right it thinks it's a 5.25" drive.
 
Just ran DriveID on my A1200 which I've also equipped with an FZ-357A drive. It reports $0000 0000 for DD disks and $AAAA AAAA for HD disks. So I guess the hardware manual has it wrong on both revisions and that your drive indeed misreports itself, it should be easy to fix though, just cut the RDY line and use the equation: RDY_A = XOR(MTR_F, RDY_F) where RDY_A is the READY line on the Amiga side, RDY_F the same line on the floppy side and MTR_F the drive's dedicated motor control signal.
 
Just ran DriveID on my A1200 which I've also equipped with an FZ-357A drive. It reports $0000 0000 for DD disks and $AAAA AAAA for HD disks. So I guess the hardware manual has it wrong on both revisions and that your drive indeed misreports itself, it should be easy to fix though, just cut the RDY line and use the equation: RDY_A = XOR(MTR_F, RDY_F) where RDY_A is the READY line on the Amiga side, RDY_F the same line on the floppy side and MTR_F the drive's dedicated motor control signal.

Not getting email notifications any more for this thread... Weird?!

Thanks for confirming things using your own machine. Not sure how to implement your fix above though? Are you talking about a hardware fix with a 74LS86 (or similar) or a software 'patch' here?

My only other thought was that a knackered capacitor somewhere is holding the RDY line in one state for too long and this causes the flip flop to be interpreted in an inverted manor? I've looked at the schematic's for the RDY line and there seems to only be one tiny value capacitor on the Amiga side. I've replaced the SMD capacitor on the Chinon just in case this causing an issue but it made no difference.

Which revision machine do you have? I've been looking at this schematic (http://www.amigawiki.org/dnl/schematics/A1200_R1.pdf) and on Sheet 8 it implies there is some sort of 'overlap' problem with U26 and U26X which controls the motor. On the later schematic (http://www.amigawiki.org/dnl/schematics/A1200_R2.pdf) this issue seems to have been corrected with just U26 used. < Just looked on my actual board and found that U26X isn't populated.
 
Last edited:
EDIT: Actually, can't I just NOT gate the RDY line? According to those links that should 'correct' signal?
 
EDIT: Actually, can't I just NOT gate the RDY line? According to those links that should 'correct' signal?

Sadly not.
RDY has dual usage on the Amiga.

When the motor is ON, it is interpreted as it was meant to (i.e. it indicates the motor is rotating at full speed and thus the drive is ready for I/O).
This function of RDY seems to be OK on your drive (but since Amiga OS doesn't use RDY that way, try with some NDOS trackloading game/demo that utilises it to make sure).
So RDY should not be inverted when the motor is ON, i.e. one part of the equation is ~MTR_F * RDY_F (motor on means MTR = 0 or ~MTR =1, thus ~MTR_F * RDY_F preserves whatever RDY_F is when the motor is ON).

When the motor is OFF, RDY_F has no significance, and they decided to utilise it for ID purposes. Thus inversion should only occur then. This gives the other part of the equation: MTR_F * ~RDY_F (i.e. when motor off aka MTR = 1, invert RDY_F).

Thus RDY_A = ~MTR_F * RDY_F + MTR_F * ~RDY_F = MTR_F /+ RDY_F (where /+ is XOR, ~ is NOT, + is OR and * is AND).

But this is (it just occured to me!) only partially useful as it does not take into account the fact that IDs work correctly for DD disks... so a more complete equation will be required (I'll work it out and update if interested). Too bad though cause it won't be as simple as a single XOR :)
 
EDIT: Actually, can't I just NOT gate the RDY line? According to those links that should 'correct' signal?

Sadly not.
RDY has dual usage on the Amiga.

When the motor is ON, it is interpreted as it was meant to (i.e. it indicates the motor is rotating at full speed and thus the drive is ready for I/O).
This function of RDY seems to be OK on your drive (but since Amiga OS doesn't use RDY that way, try with some NDOS trackloading game/demo that utilises it to make sure).
So RDY should not be inverted when the motor is ON, i.e. one part of the equation is ~MTR_F * RDY_F (motor on means MTR = 0 or ~MTR =1, thus ~MTR_F * RDY_F preserves whatever RDY_F is when the motor is ON).

When the motor is OFF, RDY_F has no significance, and they decided to utilise it for ID purposes. Thus inversion should only occur then. This gives the other part of the equation: MTR_F * ~RDY_F (i.e. when motor off aka MTR = 1, invert RDY_F).

Thus RDY_A = ~MTR_F * RDY_F + MTR_F * ~RDY_F = MTR_F /+ RDY_F (where /+ is XOR, ~ is NOT, + is OR and * is AND).

But this is (it just occured to me!) only partially useful as it does not take into account the fact that IDs work correctly for DD disks... so a more complete equation will be required (I'll work it out and update if interested). Too bad though cause it won't be as simple as a single XOR :)

That's makes sense thank you. I too forgot that if we 'fix' the ID signal it will mess up the DD ID.. shame, as I ordered two 78LS86 from eBay :lol:

Might be time to order a proper oscilloscope as I've been wanting a Rigol DS1054 for a while now:D
 
Are you positive about that? As far as I remember, the ID stream of a DD drive is just zeroes, i.e. the drive doesn't even need to know about/have this ID mechanism, because, by default, a drive won't change the state of the READY signal when pulsing SELECT while the MOTOR line is not asserted.

The bitstream with any plain (ID-unaware) drive connected would be identical to no drive connected at all, that is all 1's, for the very reason you just mentioned.

you are right, of course.. don't know where that brain fart came from :-)

- - - Updated - - -

Might be time to order a proper oscilloscope as I've been wanting a Rigol DS1054 for a while now:D

yes, get one of those.. I have a DS2072 modded for 300MHz bw and all options installed, and I think the 1054 can be modded, too ;-)
 
Last edited:
Are you positive about that? As far as I remember, the ID stream of a DD drive is just zeroes, i.e. the drive doesn't even need to know about/have this ID mechanism, because, by default, a drive won't change the state of the READY signal when pulsing SELECT while the MOTOR line is not asserted.

The bitstream with any plain (ID-unaware) drive connected would be identical to no drive connected at all, that is all 1's, for the very reason you just mentioned.

you are right, of course.. don't know where that brain fart came from :-)

- - - Updated - - -

Might be time to order a proper oscilloscope as I've been wanting a Rigol DS1054 for a while now:D

yes, get one of those.. I have a DS2072 modded for 300MHz bw and all options installed, and I think the 1054 can be modded, too ;-)

Ordered my 1054Z today and I've got links to the sites in readiness ;)

This is going to be the most expensive floppy drive fix ever :roll:
 
Wow, what a great thread. I've learnt many things about Amiga drives that I didn't know. I was always of the opinion that they were more or less a PC drive. Looks like I need to read up more on this.

@ptp170: The Rigol is a great scope for the price. A good choice you've made there.

Bryce.
 
Wow, what a great thread. I've learnt many things about Amiga drives that I didn't know. I was always of the opinion that they were more or less a PC drive. Looks like I need to read up more on this.

@ptp170: The Rigol is a great scope for the price. A good choice you've made there.

Bryce.

Isn't it just !

Found this as well which is a great resource for Amiga drives! http://issuu.com/ivanguidomartucci/docs/amiga-disk-drives-inside-and-out---ebook-eng

DS1054Z is arriving today, plus I've got a logic analyser on the way too :D
 
Although I own other relatively expensive but older scopes, I bought a Rigol MSO1104Z-S which includes a Logic analyser and frequency generator. Very happy with it so far. At first I was double checking with an Agilent or Tektronix scope to be sure the readings were correct, but it proved to be pretty trustable and accurate. What LA have you gone for? I assume it's a USB thingy?

Bryce.
 
Although I own other relatively expensive but older scopes, I bought a Rigol MSO1104Z-S which includes a Logic analyser and frequency generator. Very happy with it so far. At first I was double checking with an Agilent or Tektronix scope to be sure the readings were correct, but it proved to be pretty trustable and accurate. What LA have you gone for? I assume it's a USB thingy?

Bryce.

It's a clone of the 8 channel Salene LA, they seem to be a bit hit and miss depending on how good the clone is but thought it would make a nice item to go with the Rigol.

Playing with the 1054 now... First thing I did was 'upgrade' it... I'm getting baffled by doing the simplest things... There are so many features it's quite overwhelming.. I might actually have to resort to the manual. Still, I've managed to grab a poor snapshot of what's happening on the RDY line and I think the issue might be that some of the data state transitions aren't making it to 5v so it might be that the Amiga isn't seeing a'll the '1s' that is should...
 
If that's the case, then you can solve it by adding a pull-up resistor on the RDY line. The lower the resistor value, the faster it will switch from 0 to 1. I'd try something "weak" first like a 10K though. If that doesn't work you could go down to about 2.2K.

As far as the scope is concerned, that's a bit (way) off topic, maybe we should move that part of the discussion to PMs?

Bryce.
 
If that's the case, then you can solve it by adding a pull-up resistor on the RDY line. The lower the resistor value, the faster it will switch from 0 to 1. I'd try something "weak" first like a 10K though. If that doesn't work you could go down to about 2.2K.

As far as the scope is concerned, that's a bit (way) off topic, maybe we should move that part of the discussion to PMs?

Bryce.

I've packed up for tonight and will continue tomorrow after work. I've figured out how to capture the information now and I think I've located the ID HD signal which appears to be 16 high to low pulses just before the drive motor kicks in... I'll see if I can Photoshop something together to show everybody :)
 
Or just stick a USB stick in the scope and press the screenshot button?

Bryce.
 
Back
Top Bottom