MainHELP Glossary Hardware SAL Workshop Companies FTP ToolsBackAbout

DEVICE NOT PRESENT

Symptom: Floppy acts normal on power up, but is not accessible.
Target : C-64 or floppy

Analysis

Device address correct?

Try loading the directory from different device addresses, i.e. type
LOAD"$",x
where x is one of 8,9,10,11. If one of the addresses works, then you are lucky. Your floppy is simply adjusted to an address other than 8. In case your drive is either a 1541-II, 1571 or 1581 use the DIP switches on the backside, otherwise see section 'Device address switch'.

Floppy, C-64 or both?

Connect floppy drive to another C-64. BE SURE to use the SAME serial cable! If the drive still does not work, try another cable. If changing the cable helped, skip the rest of this step and continue with 'C-64 or conflict?'.

Disconnect the power cord and open the drive's case. On its PCB you will find a Schmitt-Trigger inverter 74LS14, located in UA1 (old PCB), and an output driver 7406, located in UB1 (old PCB). One of these chips is probably damaged, which either prevents the floppy from receiving bus signals (defective 74LS14), or from transmitting (defective 7406). Since both chips are very cheap, you should simply replace them both (socketed chips first :) If both are unsocketed, re- place the 7406 first. If you have to unsolder a chip, do not forget to add a socket.

If even this does not help, replace as much of the socketed chips as you can, the VIA 6522 first, if possible.

If this does not solve the problem, your floppy is severely damaged and can probably only fixed by a real hardware crack, which means: get a new one on the flea market, it will be the easiest and probably cheapest way to solve your problem.

C-64 or conflict?

Connect another floppy drive to the C-64, to be sure that the failure is not due to conflicts between this particular C-64 and this particular 1541, which are rare, but possible. If this works fine, see section 'The Eighth World Wonder'. In case you still get a 'DEVICE NOT PRESENT' error, it is very probable that the failure is inside your C-64, so you can go on checking the /ATN line as described below.
Note: The following procedures require a logic tester (with pulse memory, if possible) and a multimeter. Please consider that the /ATN, /CLK and /DATA lines are inverted, i.e. register "1" bits are represented by a LOW voltage level.
The faulty element must be somewhere in the following chain: [serial jack - protection circuit (9 diodes)- 7406 - CIA]

Does /ATN go LOW?

Serial transfers start with the /ATN line going LOW. Check out the /ATN line of the serial bus with a logic tester while executing LOAD"$",8 . If this proves to be ok, switch off your C-64 and reconnect the floppy drive. After that type LOAD"$",8 again and check for a LOW impulse on the /CLK line. If one of these signals cannot be detected, then continue checking the protection circuit.

Level within valid range?

The /ATN, /CLK and /DATA levels should be checked. This pro- cedure requires them to be set permanently to a certain state using POKEs.

The following measurements should be taken with a load of approx. 1k (between GND and /ATN, /CLK or /DATA, respectivly), as the serial bus is an open collector bus. The 1k resistor loads the bus with ~5mA, which is about a tenth of the load the 7406 can take.

Type POKE 56576, PEEK (56576) OR 8

This sets the /ATN bit to "1", resulting in LOW level on the serial bus. Now check the voltage level; for secure bus operation it should be clearly below 1V.
Type POKE 56576, PEEK (56576) AND 247
This sets the /ATN bit back to "0" (HIGH level on bus). Check the voltage again, this time it should be clearly above 4V. Normal level is about 4.9 to 5.1V.
For testing the /CLK and /DATA line, use the following commands:
    /CLK  -> "1" : POKE 56576, PEEK (56576) OR 16
    /CLK  -> "0" : POKE 56576, PEEK (56576) AND 239
    /DATA -> "1" : POKE 56576, PEEK (56576) OR 32
    /DATA -> "0" : POKE 56576, PEEK (56576) AND 223
If any of the voltage levels is out of range, see section 'Power supply'.

Protection circuit ok?

The new C-64 boards (anything other than the original) usually have a protection circuit for the serial bus, consisting of 8 diodes (or sometimes less). If you happen to have the original board without this circuit, you may skip the passages dealing with the diodes.

Although the output driver 7406 is a tough guy (50mA per pin), it can be damaged, too, for example by a broken protection circuit, mentioned above.

To check the diodes, switch off your C-64 and test them using a multimeter (simple ohmmeter will do). When the volume resis- tivity is near to 0 ohm (< 10 ohms) the diode is most likely defective. Since checking diodes in-circuit is not a 100% re- liable test for proper operation, you should simply replace all the diodes, if you got them handy, as they are a really low-cost element. Besides that, this avoids damaging the 7406 in case it has to be replaced also and the diodes are blown.

7406 or CIA?

If the diodes prove to be ok or have been replaced and it still does not work, the next issue is the output driver 7406. If its case becomes hot during operation, it is very probable that it is damaged; after replacing it everything should work fine again. If it stays cool, it needs a closer examination. For testing, set the CIA output lines to defined leves using the pokes described in 'Level within valid range?' and check the 7406's input levels. If you cannot measure the correct signals, it is obvious that the failure is either due to the CIA or due to the 7406 itself, which can make the input levels drop when it is defective. Since the latter is much cheaper than a CIA, replace the output driver first. If the signals are still void, it is obvious that they do not arrive from the CIA; the reasons for that are either hair cracks or dry joints or - which is bad luck - a damaged CIA which has to be replaced. To exclude the first case, check for hair cracks first. If the copper strips seem to be alright, the input lines re- main to be checked.

CIA input bits ok?

Until now we concentrated on failures in the output circuitry, but it is also possible that the CIA's input lines (which are directly connected to the bus (as opposed to the 1541's VIA)) are damaged. The /CLK line is connected to pin 8 (PA6) and pin 6 is connected to pin 9 (PA7). Use the following POKEs and PEEKs to determine whether the logical levels on the bus are detected correctly:
  
    /CLK  -> "1" : POKE 56576, PEEK (56576) OR 16
                      PRINT PEEK (56576) AND 64
		      
    /CLK  -> "0" : POKE 56576, PEEK (56576) AND 239
                      PRINT PEEK (56576) AND 64
If the "1" POKE results in "0" and the "1" POKE results in "64", the /CLK line is ok.
    /DATA -> "1" : POKE 56576, PEEK (56576) OR 32
                      PRINT PEEK (56576) AND 128
    
    /DATA -> "0" : POKE 56576, PEEK (56576) AND 223
                      PRINT PEEK (56576) AND 128
If the "1" POKE results in "0" and the "0" POKE results in "128", the /DATA line is ok.

If either the /CLK or /DATA line is invalid, your CIA does not recognize logical bus levels correctly; replace it.

Note: The above test demands a working output circuitry.


Updated: May 18th, 1999
Created: January 1997
Status : NOT VERIFIED!

Site copyright © 1997 by Marc-Jano Knopp
This document is part of MJK's Commodore 64 & LCD Page
Brought back to life by Peter Schepers, Dec 10, 2005 because I really liked this site!