Diskettenlaufwerk 1541 selbst justiert
Es ist bekannt, daß das mechanisch anfällige 1541-Diskettenlaufwerk häufig Probleme beim Lesen eigener und im besonderen fremder Disketten hat. Hier werden zwei Verfahren vorgestellt, mit denen Sie diesen Fehler beseitigen können.

In den meisten Fällen ist die Ursache ein verstellter Schreib-Lesekopf. Wird das Laufwerk zu einem Reparaturservice eingeschickt, sind Wartezeiten bis zu drei Monaten leider üblich. Außerdem ist die Reparatur nicht ganz billig, und oft tritt der gleiche Fehler innerhalb kürzester Zeit wieder auf.
Wir wollen Ihnen deshalb zwei Verfahren vorstellen, mit denen Sie das 1541-Diskettenlaufwerk selbst einstellen können, beziehungsweise von jedem Radio und Fernsehfachhandel einstellen lassen können. Bei dem ersten Verfahren handelt es sich um eine reine Softwarelösung, mit der das Laufwerk zwar nicht exakt eingestellt werden kann, in den meisten Fällen ist es aber vollkommen ausreichend. Mit dem zweiten Verfahren kann das Laufwerk dagegen absolut genau eingestellt werden. Benötigt wird allerdings ein Oszilloskop.
Fixierung der Mechanik
Unabhängig vom Verfahren muß zuerst der Schreib-Lesekopf neu fixiert werden. Schalten Sie dazu bitte alle Geräte aus und ziehen das Netz- und IEC-Kabel aus dem Laufwerk.
Nach dem Lösen der sechs Kreuzschlitzschrauben auf der Unterseite, läßt sich der Gehäusedeckel des Laufwerks entfernen. Da sich der Schrittmotor, an dem später die Einstellung vorgenommen wird auf der Chassisunterseite befindet, muß auch der Gehäuseboden entfernt werden, der mit sechs Kreuzschlitzschrauben befestigt ist. Lösen Sie bitte diese sechs Schrauben und ziehen vorsichtig den Stecker ab, der die grüne Leuchtdiode mit der Platine verbindet. Um später beim Zusammenbau Fehler zu vermeiden, markieren Sie alle Steckverbindungen mit einem Filzstift. Als nächstes lösen Sie alle Schrauben, die die Platine mit dem Chassis verbinden und ziehen vorsichtig die restlichen Steckverbindungen ab.
Die Platine kann nun abgehoben und zur Seite gelegt werden. Liegt das »nackte« Chassis vor Ihnen, sehen Sie auf der rechten Seite ein Stahlband, das den Schreib-Lesekopf mit dem Schrittmotor über einen Zylinder verbindet (Bild 1). Da der Zylinder sich bei Erwärmung mehr ausdehnt als die Achse des Schrittmotors und nur über eine Preßpassung mit dieser verbunden ist, tritt zwischen Schrittmotor-Achse und Zylinder ein Schlupf auf. Das heißt, daß sich der Zylinder auf der Achse beim Formatieren einer neuen Diskette verdreht und dadurch den Schreib-Lesekopf verstellt. Um das zu verhindern, muß die Achse und der Zylinder im betriebswarmen Zustand verklebt werden. Dazu eignen sich Superkleber, wie sie von vielen Firmen angeboten werden oder Epoxydharz, das mit einem Härter versehen ausreichend Festigkeit gewährleistet. Lassen Sie diesen Kleber vorsichtig zwischen Achse und Zylinder laufen. Passen Sie aber auf, daß der Kleber nicht versehentlich mit dem Stahlband in Berührung kommt. Nach etwa drei Stunden Trockenzeit können Platine und Chassis zusammengeschraubt werden. Vergessen Sie nicht die Steckverbindungen wiederherzustellen. Der Schreib-Lesekopf ist jetzt fixiert, und der eigentliche Einstellvorgang kann beginnen. Stellen Sie dazu das Laufwerk so vor sich hin, daß der Diskettenschacht senkrecht steht. Stellen Sie die Verbindung mit dem Computer und dem Netz wieder her und schalten alle Geräte ein.

Verfahren 1 (Softwarelösung)
Laden Sie das vorher abgetippte Programm (Listing 1) und legen eine »sauber« bespielte Diskette in das Laufwerk (am besten die Test Demo Diskette). Nach dem Lösen der zwei Schrittmotor-Befestigungsschrauben (Einstellschrauben) an der Unterseite des Laufwerks, kann das Programm mit RUN gestartet werden. Der Menüunterpunkt »Feineinstellung« eignet sich nicht zur Justierung des Diskettenlaufwerkes; denn hier werden alle Spuren getestet, und die Lesezeiten der einzelnen Spuren weichen voneinander minimal ab. Es läßt sich also keine minimale Lesezeit einstellen. Wählen Sie deshalb den Menüunterpunkt Grobeinstellung. Sie werden nach der maximal zulässigen Lesezeit gefragt. Die Voreinstellung beträgt 0,2 Sekunden. Das ist die Zeit, die dem Laufwerk zur Verfügung steht, um einen Sektor zu lesen. Wird diese Zeit überschritten, erscheint auf dem Bildschirm in roter Farbe eine Fehlermeldung. Ist die Lesezeit kürzer als 0,2 Sekunden wird einmal die tatsächliche Zeit, die das Laufwerk braucht um einen Sektor zu lesen angezeigt. Zum anderen wird diese Lesezeit optisch durch einen querliegenden Balken verdeutlicht.
Versuchen Sie durch Verstellung des Schrittmotors diese Lesezeit auf ein Minimum zu justieren. Ist das geschehen, sind die Einstellschrauben leicht anzuziehen, so daß sich der Motor nicht mehr von selbst verstellen kann. Sie werden sehen, daß sich die Lesezeit alleine durch das Festschrauben verändert hat. Versuchen Sie jetzt, indem Sie den Vorgang wiederholen, die Lesezeit nochmals zu optimieren. Anschließend sind die Einstellschrauben fest anzuziehen und das Laufwerk wie oben beschrieben, nur in umgekehrter Reihenfolge, zusammenzubauen.
Verfahren 2 (Hardwarelösung)
Da der C 64 wie jeder andere Computer auch, ein Gerät ist, das Daten digital verarbeitet, lassen sich analoge Einstellvorgänge zwar hinreichend genau, aber nicht exakt durchführen. Aus diesem Grund haben wir eine »Hardwarelösung« entwickelt, mit der jeder, der den Umgang mit einem Oszilloskop beherrscht, das 1541-Diskettenlaufwerk absolut exakt einstellen kann. Voraussetzung ist natürlich auch wieder eine Diskette, die mit einem Disketten-Laufwerk beschrieben wurde, das exakt eingestellt war. Die Vorgehensweise ist die gleiche wie beim Verfahren 1, mit dem Unterschied, daß nach dem Einschalten aller Geräte und nach dem Lösen der Einstellschrauben folgende Zeilen anstelle des Programms eingegeben werden müssen:
10 OPEN 2,8,2,"#": OPEN 15,8,15
20 PRINT#15,"U1 2 0 18 0":GOTO 20
Die Aufgabe dieses kleinen Programms, das mit RUN gestartet wird, ist das permanente Lesen des Sektors 0 auf Spur 18. Diese Spur und dieser Sektor sind mit Absicht so gewählt worden, da der Abstand nach Spur 1 und Spur 35 der gleiche ist. Stellen Sie nun die Y-Ablenkung des Oszilloskops auf 10 mV/cm und die X-Ablenkung auf 1 mS. Verbinden Sie den Tastkopf, der bei den angegebenen Einstellwerten ein Tastverhältnis von ⅒ haben muß, mit dem in Bild 1 markierten IC-Pin 8. Das Oszillogramm zeigt ein »hochfrequentes« Signal, das bei exakter Justierung einen Spannungspegel von etwa 350 mVss haben sollte. Dieser Spannungspegel ist aber nur ein Anhaltspunkt und hängt in erster Linie vom Alter der Diskettenaufnahme ab. Verdrehen Sie den Schrittmotor so lange, bis der Spannungspegel ein Maximum erreicht. Auch ist bei einem dejustiertem Schreib-Lesekopf dem hochfrequenten Signal ein niederfrequentes Signal überlagert, das an der zyklischen Veränderung der Amplitude zu erkennen ist. Dieses überlagerte Signal verschwindet bei exakt eingestelltem Schreib-Lesekopf.
(M. Kastermeier/ah)100 rem ****** floppy - adjust ****** : 120 print"{clr}{swlc}{wht}":poke53280,12:poke53281,0:poke198,0 140 g=1:mg=3:r1=10:r0=3:rv=0:a$=" " 150 cu=214:rem cursorzeile 160 print"{home}{down}{down}"a$"FLOPPY-EINSTELLHILFE" 170 print:printa$"<c> by M.Austermeier{down}{down}" 180 print"{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}"; 190 ifc/r1=int(c/r1)thenrv=notrv 192 ifrvthenprint"{rvon}"; 195 print"{lblu} Bitte mit 'CRSR' waehlen "; 196 print" dann 'RETURN' druecken {wht}";:poke199,0 197 print"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}" 200 x=1:w$="Grobeinstellung":gosub400 220 w$="Feineinstellung":gosub400 240 w$=" ENDE ":gosub400 280 getg$:ifg$=chr$(13)then360 300 ifg$="{down}"theng=g+1:ifg>mgtheng=1 320 ifg$="{up}"theng=g-1:ifg<1theng=mg 330 poke198,peek(198)and1 340 goto160 360 onggosub445,445:onggoto460,500,450 380 goto280 400 print:printa$;:ifx=gthenprint"{rvon}"; 420 printw$"{rvof} "; 430 ifx=gthenc=c+1and15:ifc/r0=int(c/r0)thenprint"{left}_"; 440 print:x=x+1:return 445 pokecu,24:print:forf=1to11:print:next:pokecu,10:print 446 poke768,174:poke769,167:poke144,0:open1,8,15:close1:rem test device present 447 poke768,139:poke769,227 448 ifst=0thenreturn 449 e$="Floppy nicht eingeschaltet":goto1340 450 close2:close1:print"{clr} Bye.":end 460 rem grob 480 t1=18:t2=18:goto560 500 rem fein 520 print"Lesen von Spur ";:input" 1{left}{left}{left}";t1 540 print"Lesen bis Spur ";:input" 35{left}{left}{left}{left}";t2 560 input "Max. Zeit fuer 1 Block 0.5 sec{left}{left}{left}{left}{left}{left}{left}{left}{left}";g$:mt=val(g$) 570 fb=0:input"Randfarbwechsel gewuenscht<j/n> n{left}{left}{left}";g$:ifg$="j"thenfb=1 580 print"{clr}Bitte korrekt formatierte Diskette" 600 print"einlegen.(Daten werden {rvon}nicht{rvof} zerstoert)" 610 print:print"Nach dieser Diskette kann die Floppy":print"eingestellt werden" 620 print:print"Fertig ? Dann Taste druecken" 640 poke198,0:wait198,1:getg$ 680 zl=10:sp=12:rem pos. f.balken 700 dl=59903:rem adr.delete line 720 xr=781:rem x-reg.sys 740 lb=20:b$="{rvon}":forf=1tolb:b$=b$+" ":next 780 deffnt(x)=int(peek(x)/16)*10+peek(x)-int(peek(x)/16)*16 800 z=56328:s=z+1:pokes,0:pokez,0 820 print"{clr} **** Floppy-Adjust **** V25.2.85" 840 print " *** <c> M.Austermeier ***" 860 pokecu,5:print:print" Disk wird initialisiert" 880 open1,8,15,"i":open2,8,2,"#" 900 pokecu,zl:print 920 printtab(sp)" ^ max."spc(lb-13)"min. ^" 940 t=t1:rem track 960 pokes,0:pokez,0 980 print#1,"u1:"2;0;t;1 1000 input#1,e,e$,et,es:ifethen1340 1040 tm=fnt(s)+fnt(z)/10-d 1060 fl=notfl:ifflandfbthenpoke53280,(peek(53280)+1)and1:rem alle farben-and15 1080 tb=lb-lb*(tm/mt):iftb<0thentb=0 1100 pokexr,zl:sysdl 1120 print"Zeit :"tm"s"tab(sp)left$(b$,tb+1) 1140 pokecu,5:print:print"{rvon}{lblu}Einstellung o.k {rvof}{wht}"; 1160 print"Spur : "t"{left} " 1180 iftm>mtthenprint"{rvon}{up}{red}falsche Einstellung !{rvof}{wht}" 1200 tx=t:t=t+1:ift>t2thent=t1 1220 d=abs(t-tx)/100:rem fuer tracktransport zeit zugeben 1240 getg$:ifg$<>""then1380 1260 goto960 1340 print"{clr}{rvon}Floppy - Fehler{rvof} !{down}{down}{down}{down}{down}":printe;"{rvon}"e$"{rvof}";et;es 1360 print:print"Bitte Taste druecken.":poke198,0:wait198,1 1380 close2:close1:run