• Please review our updated Terms and Rules here

Amstrad PC1640 - Faulty Floppy Disk Controller or Disk Drive

jarcher1701

Experienced Member
Joined
Oct 24, 2023
Messages
58
Hello. I'm hoping there are some resident Amstrad experts who may be able to assist.
I recently acquired an Amstrad PC1640 with an 'MD' monochrome display. It starts to go through the initialisation checks but never reaches a prompt. After showing 'Please Wait....' it displays the following error message: " Error: Faulty Floppy Disk Controller or Disk Drive".

The hard disk was removed by the previous owner before the sale. I've removed the hard disk controller card that came with the machine. The original 5.25 floppy drive is connected to the onboard FDC via the ribbon cable and is powered with the onboard Molex cable. With or without the drive connected it displays the error message every time.

There was only one occasion where it didn't display the message and instead mentioned replacing batteries. This has not reoccurred.

I've taken apart the machine, cleaned it and re-seated all socketed chips. No change.

Someone suggested adding the 4 AA batteries. I've done this, and checked the battery wires for continuity to the board and it seems fine, but there's no change.

More detail is provided here. https://www.vogons.org/viewtopic.php?f=46&t=96798&p=1205534#p1205534

Many thanks in advance for anyone that can help.
 
Hi!

I have several of these machines and currently have one that I am taking apart for cleaning. As per your photo on vogons, your cable is inserted correctly. The one I am working on has 2 floppy drives... floppy drive 1 has the jumper set to 0, floppy drive 2 has the jumper set to 1. I tested the machine with a single drive (jumper set to 0) and it tried to boot no problem.

On first power up I get the 'please wait...' message and the drive light comes on for less than half a second. After a few seconds the screen clears and I get the messages as per the attached photo. As soon as the 'Please fit new batteries' line appears the drive light comes on and it is looking for the boot disk.

Like your machine, there have been no batteries installed in this machine for years, so this should not cause you an issue.

My first thought would be to try powering the floppy from another power supply to rule out a failing supply inside the monitor?

Edit: If I remove the molex power cable to the drive and try to boot, I no longer see the 'please wait...' message but it goes straight to the error message you are seeing.


Amstrad 1640.jpg
 
Last edited:
The Amstrad PC1640 Technical Manual describes the disk test procedure:
The disk test attempts to establish whether the drives fitted to the system seek correctly. The test moves the read/write heads to track 10 on each drive. The ROS does not verify that the correct track was attained. If any errors are reported then a floppy disk controller error message is displayed.
So you need at least a drive A: that can seek, otherwise you get the error message and you cannot proceed further (the disk error is considered fatal by the BIOS). Do you have a way to check if the drive works on another machine?
 
Thank you @austfox and @davide78 for your responses. I think you've identified the issue! The drive light never lights up at all during the initialization sequence suggesting that the drive isn't initialising and sending a 'ready' signal. Either the drive itself is faulty then, or the FDC chip and surrounding circuity perhaps?

Unfortunately, I don't think I have a way to test the 5.25 inch drive. I do have an AT machine (Pentium 166) with a spare 5.25 inch slot - but how would I connect it to the motherboard? Do I need a 5.25 'card edge' floppy cable? Could I purchase an adaptor of some kind to fit a standard floppy cable?

I have a multimeter so I could check that the Molex is delivering the required voltage as well.

Thank you again. Much appreciated! :)
 
Last edited:
P.S. I just realised I do have a standard 'twisted' floppy cable and it has a 'hard edge' connector at the end - I assume for 5.25 inch 'b' drives. I'll try and test and report back.
 
The drive light never lights up at all during the initialization sequence suggesting that the drive isn't initialising and sending a 'ready' signal.
The circuit diagram in the PC1640's service manual reveals that:
- If a floppy drive did generate a READY signal (pin 34), the PC1640 does not use it.
- An untwisted cable is used. I can see such a cable in one of your posts at vogons.org

Is your floppy drive set for the first of the drive select options?
I.e. If options are DS0, DS1, DS2, DS3, then choose DS0.
I.e. If options are DS1, DS2, DS3, DS4, then choose DS1.

1698270063288.png
 
I was wondering why you couldn't simply use the existing Amstrad cable to connect the floppy to your Pentium, but then realised it is hard-wired to the motherboard!

Interestingly, when I get the Faulty drive / controller message with the molex power cable disconnected from the drive (but with the ribbon cable still attached) the drive light remains on.

Not sure of your location, but if you are in the US it would probably be easier to locate an older style 5.25 floppy cable to use with your Pentium than an adaptor (if they exist)?
 
The circuit diagram in the PC1640's service manual reveals that:
- If a floppy drive did generate a READY signal (pin 34), the PC1640 does not use it.
- An untwisted cable is used. I can see such a cable in one of your posts at vogons.org

Is your floppy drive set for the first of the drive select options?
I.e. If options are DS0, DS1, DS2, DS3, then choose DS0.
I.e. If options are DS1, DS2, DS3, DS4, then choose DS1.

View attachment 1266769
Thanks for this information. It's interesting that the PC1640 doesn't use the ready signal.

The floppy cable that comes with the machine is soldered to the motherboard so it's the only one I can use directly. However, I have another 'twisted cable' with a 'hard edge' b drive connector which I hope to use to test the drive on another machine. Although it's an Amstrad branded drive, I assume it's PC compatible.

The drive itself is set to 'DS0' (via the jumper). I'm not sure which 'options' the machine is set to; are there jumpers on the board somewhere?
 
I was wondering why you couldn't simply use the existing Amstrad cable to connect the floppy to your Pentium, but then realised it is hard-wired to the motherboard!

Interestingly, when I get the Faulty drive / controller message with the molex power cable disconnected from the drive (but with the ribbon cable still attached) the drive light remains on.

Not sure of your location, but if you are in the US it would probably be easier to locate an older style 5.25 floppy cable to use with your Pentium than an adaptor (if they exist)?
Yes, it's hard wired. :-( I did do a quick continuity check from the cable pins to the motherboard pins (solder joints). Continuity is fine.

That's interesting regarding your drive. If the Molex connector is disconnected how is it getting power for the LED?
 
Okay. Some good news at least. The Amstrad 5.25 floppy drive seems to work fine on my other retro PC. I set this machine to boot from the A drive. Drive light comes on and I can hear the disk head move/seek.

So that would suggest that the drive isn't getting power and/or isn't being initialised by the PC1640.

Any advice on next steps? Should I check the voltage at the Molex pin? And perhaps the voltage entering the system at the main power input socket?
 
P.S. I just realised I do have a standard 'twisted' floppy cable and it has a 'hard edge' connector at the end - I assume for 5.25 inch 'b' drives. I'll try and test and report back.
Yes, you can use a standard cable to do the test. Your drive should be jumpered as drive 0, so it would appear as A: if connected before the twist, and as B: after the twist (the opposite of the standard behaviour, that assumes all drives are set as drive 1). You can also clean and lubricate the drive head rails, to be sure that the head can move freely.
 
Ihad the same problem in a pc640 and the cause was one 1489 that failed. I replaced it and it worked for me.
 
The Amstrad PC1640 Technical Manual describes the disk test procedure:

So you need at least a drive A: that can seek, otherwise you get the error message and you cannot proceed further (the disk error is considered fatal by the BIOS). Do you have a way to check if the drive works on another machine?

Just an update on where I'm at. I tested the Amstrad 5.25 drive in another PC and it seemed to work fine. Lights came on on system boot and the head was moving.

I've just tested the two Molex connectors from the Amstrad. Voltage readings seem stable and afaik are correct. They were 12v and 5v respectively (one wire was red, the other was orange). So I think I can safely assume the drive is receiving power.

It would seem therefore the drive is not even being initialised.
Any advice on next steps? Should I test the FDC? Or should I just replace the two 1489s as suggested by @retrolab?

Many thanks everyone for your help so far.
 
Any idea where IC102 and IC103 (1489s) are on the Amstrad Chassis Circuit Diagram? I've looked all over...

Edit: I found them. They appear to be related to the nearby serial port. How would that be responsible for a floppy drive initialisation error?
 
Last edited:
The hard disk was removed by the previous owner before the sale. I've removed the hard disk controller card that came with the machine.
Do you have an XT-IDE or XT-CF card that you can put in the computer (to get a boot to DOS) ?
If so:

I expect that, for compatibility reasons, the floppy controller in the Amstrad is functionally equivalent to the one in the IBM PC family, and sits at the same base I/O address.

In which case, you can use BASIC or DEBUG or various programs to issue commands (ones that work for the IBM PC family) to the floppy controller.

A particular command is expected to light the LED on the front of your floppy drive. (The command will assert the DRIVE SELECT signal to the drive.)
If the LED does not turn on, you use test equipment and the circuit diagram to work out why.

Maybe someone with the same Amstrad as you can very that the following works on their Amstrad (to be sure).

-----------
BASIC
-----------

For the IBM PC family, which has BASIC in ROM, I put some BASIC code at [here]. You could run a BASIC located on the hard drive.

OUT 1010,20 is the BASIC statement to use.

In the IBM PC family, the LED only turns on for a few seconds. (The IBM BIOS turns things off after a short timeout.)
To get around that (have the LED on continuously), instead, use:

10 out 1010,20
20 goto 10
run


-----------
DEBUG
-----------

Run DEBUG. DEBUG will present a dash prompt. Type in:

- o 3f2 14

In the IBM PC family, the LED only turns on for a few seconds. (The IBM BIOS turns things off after a short timeout.)
To get around that (have the LED on continuously), instead, use:

- a100
xxxx:0100 mov dx,3f2
xxxx:0103 mov al,14
xxxx:0105 out dx,al
xxxx:0106 jmp 105
xxxx:0108 <----- at this line just press the [ENTER] key - this will return DEBUG's dash prompt
- g=100


Note: 'xxxx' is a substitute for the segment that I see. It is unimportant.

Note: The 'jmp 105' issues the command to the controller continuously.
 
Do you have an XT-IDE or XT-CF card that you can put in the computer (to get a boot to DOS) ?
If so:

I expect that, for compatibility reasons, the floppy controller in the Amstrad is functionally equivalent to the one in the IBM PC family, and sits at the same base I/O address.

In which case, you can use BASIC or DEBUG or various programs to issue commands (ones that work for the IBM PC family) to the floppy controller.

A particular command is expected to light the LED on the front of your floppy drive. (The command will assert the DRIVE SELECT signal to the drive.)
If the LED does not turn on, you use test equipment and the circuit diagram to work out why.

Maybe someone with the same Amstrad as you can very that the following works on their Amstrad (to be sure).

-----------
BASIC
-----------

For the IBM PC family, which has BASIC in ROM, I put some BASIC code at [here]. You could run a BASIC located on the hard drive.

OUT 1010,20 is the BASIC statement to use.

In the IBM PC family, the LED only turns on for a few seconds. (The IBM BIOS turns things off after a short timeout.)
To get around that (have the LED on continuously), instead, use:

10 out 1010,20
20 goto 10
run


-----------
DEBUG
-----------

Run DEBUG. DEBUG will present a dash prompt. Type in:

- o 3f2 14

In the IBM PC family, the LED only turns on for a few seconds. (The IBM BIOS turns things off after a short timeout.)
To get around that (have the LED on continuously), instead, use:

- a100
xxxx:0100 mov dx,3f2
xxxx:0103 mov al,14
xxxx:0105 out dx,al
xxxx:0106 jmp 105
xxxx:0108 <----- at this line just press the [ENTER] key - this will return DEBUG's dash prompt
- g=100


Note: 'xxxx' is a substitute for the segment that I see. It is unimportant.

Note: The 'jmp 105' issues the command to the controller continuously.
Thank you for this information. Getting an XT-IDE card was going to be my next step after at least getting the system to initialise.

Unfortunately, that's the issue. The machine isn't getting through the initialising steps. It's not booting at all. As far I understand, it should at least get to a 'insert system disk to continue' message if a working drive is detected.

I've determined that the drive itself is fine and it's receiving power. For some reason, the drive isn't being initialised.
 
'Initialisation' is perhaps the wrong word to use. What the POST is doing is a crude test.

It probably starts off by attempting a software reset of the floppy controller chip (Z765APS) on the PC1640 motherboard, and seeing if the floppy controller chip responds to that reset appropriately.

Then comes a crude test of part of the floppy drive. The sequence might be something like:

1. POST gets motherboard to take the /DRIVE SELECT 0 line to LOW. (On a lot of drives, the drive's LED is activated when this line is asserted.)
2. POST maybe (repeat: maybe) gets motherboard to take the /MOTOR ON line to LOW.
3. POST gets motherboard to take the /DIRECTION line to LOW. (Direction to step = in)
4. POST gets motherboard to issue some step pulses on the STEP line.
5. POST verifies that the /TRACK 0 line is HIGH (i.e. drive indicating that heads are not at track 0)
6. POST gets motherboard to take the /DIRECTION line to HIGH. (Direction to step = out)
7. POST gets motherboard to issue some step pulses on the STEP line, expecting that at some point (heads have reached track 0) for the drive to take the /TRACK 0 line to LOW.

I show the majority of the 'floppy interface' portion of the PC1640 motherboard's circuit diagram at [here].

If I was in your situation, using test equipment, I would be looking at POST time, for expected activity. If I didn't have the ability to do that, and could only replace chips, then the 74HC240 chip (an inverting driver) would be the first chip that I would replace. That assumes a good floppy drive (and configured for the PC1640) and cables, faulty motherboard, and chip failure.
 
My 1640 is still on the workbench but I haven't had time to look at it. I'll see if I get a chance later tonight to confirm if modem7's sequence is correct. At least that would give you some idea what you should be checking.

I'd be reluctant to start changing ICs until you work out exactly what is not working, for fear of introducing more problems.
 
Back
Top