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.
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:
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.
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'.
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!