CBM 3040 justieren - original Floppy in Berlin?

  • Hallo,


    ich bin neu hier und gleich drei Fragen, sorry..


    ich habe einen alten CBM 3032 mit 3040 Floppy geerbt - habe an den Dingern selbst mal Angefangen als Schüler in den 80ern und also irgendwie eine persönliche Beziehung dazu.


    habe den alten Kasten soweit wieder in Schuss bekommen, der PET läuft und die Doppelfloppy nach Reinigung auch. Leider sind die Shugart-Laufwerke nicht sauber justiert, die Spurlage stimmt nicht.


    Ich kann eine Floppy in Laufwerk 0 formatieren und dann auch beschreiben und lesen, eben so in Laufwerk 1. Aber nicht wechselseitig, weil die Spurlage etwa geschätzt um einen halben mm abweicht. Daher die drei Fragen:


    1. hat jemand ein Service Manual für die Laufwerke ?

    2. wie stellt man die Spurlage ein ? an der (mit rotem Lack gesicherten) Schraube an dem Kopfschlitten?

    3. Kann mir jemand (am Besten in Berlin) eine beschriebene Floppy leihen bzw. eine Floppy beschreiben, gerne auch mit dem 1541, damit ich damit dann die Spurlage so einstellen kann, dass ich nicht nur meine eigenen Floppy lesen und schreiben kann ?


    Danke und Gruß

    Holger

  • Hi!

    In Sachen CBM-Unterlagen ist zimmers.net eine, wenn nicht DIE Anlaufstelle. Unterlagen zur 3040 findest du in: http://www.zimmers.net/anonftp…rives/old/4040/index.html

    Die Spurlage verstellt man, indem man die Befestigungsschrauben des Steppermotors, der die Rillenscheibe antreibt, von der dann der Kopfschlitten verschoben wird, von unten löst (dazu muss das Laufwerk ausgebaut sein), und dann den Stepper LEICHT verdreht. Auf dem Analogboard kann man am TP1/2 (2040-3040-4040_drive_schematics.pdf, Seite 10) mit dem Oszi messen und die Amplitude maximieren. Dazu am besten ein Basicprogramm schreiben was konstant (einstellbare) Tracks von Diskette liest. (Mittels Block-Read, steht im "CBM 2040-3040-4040-8050 Disk Drive Manual.pdf" auf Seite 49)

    Ich hab eine 1541 Demodiskette (von Commodore) als Original genommen. Die gibt's wie Sand am Meer und die 3040/4040 kann die lesen. Die Laufwerke ausgebaut, auf die Seite gelegt, um Zugang zum Stepper zu bekommen und dann ist es eine halbe Stunde rumfummeln und fluchen. Meist reicht schon das festdrehen der Schrauben und das Alignment zu verstellen. Aber ich habs nach der Methode hinbekommen. Bei DEN Drives:

  • Hi,


    danke, hätte nicht gedacht, dass man das am Stepper verstellt.... Fehlt mir nur ne Demo-Diskette...

    Vielleicht findet sich ja jemand in Berlin, der mir eine leihen oder aufspielen kann, sonst muss ich wohl in ebay suchen ?


    Gruß

    Holger

  • PS:
    Im "2040-4040_service_docs.pdf" ab Seite 26 wird die offizielle Methode beschrieben. Prinzipiell gleich und die mechanischen Hinweise (Laufwerk horizontal oder auf der linken Seite liegend etc) sind genau so anzuwenden. Aber das gezeigte Scopepattern bekommt man nur mit einer speziellen Alignmentdisk hin. Und die sind super rar. ALso richtig richtig Goldstaub.

    Aber mit der Methode des Maximierens der Amplitude geht es auch. Man KANN es sogar ganz ohne Scope machen. Einfach so lange drehen bis das Laufwerk die Originaldiskette ordentlich liest, dann ist man eh nah am Optimum.

  • Danke, habe mir jetzt in der Bucht ne völlig überteuerte C64 Demodisk bestellt…

    Diese Alignment- oder Calibration Disks sind ja nirgends zu finden…

    Wenn das Ding da ist mache ich mich ran…

  • Die C64 Floppy ist angekommen, ich habe erstmal die Drehzahl justiert und dann try-and-error die Kopfjustage so hinbekommen, dass ich die Floppy einigermaßen zuverlässig lesen kann.


    Dann wollte ich mit Hilfe das Block-read Programms aus diesem Thread Shugart SA-390/400 (Doppelfloppy CBM 3040) Reparatur das mit dem Oszilloskop ausmessen, bin aber erstmal in den Untiefen des U1 Blockreads hängen geblieben… leider ist die Doku hier echt verwirrend, aber bislang habe ich es noch nicht genau verstanden, wie man wirklich einen bestimmten Cylinder/Sektor liest…

    Der Code aus dem Thread ist jedenfalls falsch und produziert einen Syntax Error in dem 3040


    Naja, Morgen ist auch ein Tag…

  • Den Code hatte ich damals geschrieben, allerdings auf einem Basic4 8032-SK mit auf 4040 (DOS2) geupgradeter 3040.
    Das läuft nicht ohne Anpassungen auf dem Basic2 eines 3032, weil einige Befehle noch so nicht existieren.

    print ds$ in Zeile 260 zum Beispiel.
    Weiter unten im Thread hab ich eine Version gepostet die auf einem 3032 zu laufen schien aber noch einen Bug enthielt:

    Shugart SA-390/400 (Doppelfloppy CBM 3040) Reparatur
    Das FOR aus Zeile 160 sollte nach den open befehlen der beiden nachfolgenden Zeilen kommen.

    Beim durchlesen des Threads fiel mir noch was auf.... eine nicht geupdatete 3040 kann noch keine C64 disks lesen.
    Shit, das hatte ich komplett vergessen, da meine schon beim Kauf das Dos2 upgrade hatte. (Auch berichten die meisten Seiten dass eine 3040 das 1541er format lesen kann und VICE liefert auch das 2er DOS für die 3040)

    Versuch also erst mal das hier:
    Rechner resetten, danach eingeben:
    10 open 1,8,15:input#1,e,e$,t,s:print e,e$,t,s:close 1

    und run
    Das ist der Ersatz für den Basic4 Befehlt "print ds$" und liest den Fehlerkanal des Drives aus. Direkt nach dem Start meldet es die DOS-Version.
    Ein DOS2 Laufwerk meldet sich dann mit

    73 CBM DOS V2 0 0

    Was steht bei dir?

  • Shit, das hatte ich komplett vergessen, da meine schon beim Kauf das Dos2 upgrade hatte. (Auch berichten die meisten Seiten dass eine 3040 das 1541er format lesen kann und VICE liefert auch das 2er DOS für die 3040)

    Nur die frühen 3040 wurden mit DOS 1 ausgeliefert. Eine Bekannter von mir hatte so eine.

    Die meisten wurden dann mit DOS 2 geliefert.

    So ein Versionswechsel innerhalb einer Modellreihe macht Anwender auch nicht glücklich. Zumal wenn das Diskettenformat nicht kompatibel ist.

    Mit DOS 2 konnte man DOS 1 Disketten lesen, wenn ich mich richtig erinnere, aber beim Schreiben gab es Chaos.

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Schwierig… das Programm, so wie Du das U1 Statement geschrieben hat, produziert auf der 3040 einen Fehler:

    32 SYNTAX ERROR 0 0 32

    Passe ich es auf

    160 PRINT#14,“U1:2,“D$,C$,STR$(N)

    an, dann bekomme ich einen Fehler

    70 NO_CHANNEL 0 0 70


    Scheinbar ist Channel 2 nicht Ok, aber das Open Statement in 110 läuft auf OK


    Direkt nach dem Einschalten von Floppy und Rechner lässt sich der Fehlerkanal nicht auslesen, das kleine Programm blockiert, bis ich die Floppy wieder ausschalte.


    Die C64 Diskette kann ich lesen, auch die Files darauf, aus einem habe ich Syntax des U1 Commandos angeschaut.


    Hier das Programm:

  • wenn

    10 open 1,8,15:input#1,e,e$,t,s:print e,e$,t,s:close 1

    einen syntax error liefert dann hat das drive wohl noch DOS1, jedenfalls verhält sich in vice eine 2040 ebenso.
    probier mal:


    das läuft in vice mit einer 2030 an einem 3032. In echt kann ich es leider nicht testen.

  • Laut dem 2040 Manual von 1979 gab's das U1 Kommando schon.

    Aber wozu man U1 und U2 brauchte, hat mir auch nie eingeleuchtet.


    Übrigens, das schlimmst am DOS 1 war, dass man die Disketten nach jedem Diskettenwechsel mit I0 oder I1 initialisieren musste. Sonst war die aöte FAT noch im Speicher und wurde auf die neue Diskette geschrieben. Die war dann hinüber.

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Die User-Kommandos (hier U1) fand ich immer etwas suspekt, und habe immer die 'normalen' DOS-Kommandos (wäre hier B-R) verwendet.

    Vielleicht gab es die auch bei DOS 1 noch garnicht?

    B-R liest nur so viele Byte, wie im 1. Byte (0-indiziert) steht.


    Wenn also der Block so beginnt:

    Code
    00: 00 12 01 02 03 04 05 06
    08: 07 08 09 0A 0B 0C 0D 0E
    10: 0F 10 11 12 13 14 15 16
    18: 17 18 19 1A 1B 1C 1D 1E

    dann kann man mit B-R nur bis zur Adresse $14, also dem Wert $12 lesen. Danach bricht es ab.


    Genauso mit B-W, der legt in dem Byte die Anzahl der geschriebenen Byte ab (und überschreibt den Wert damit).


    Für manche Anwendungen ist das nett, für jemanden, der sich die Blöcke aber komplett anschauen will, nicht.

  • Ja. Und was ist jetzt die Aussage? :nixwiss:

    U1/U2 tut das nicht? Oder verhält sich genauso? Dann wäre es immer noch überflüssig.

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • U1/U2 tut das nicht? Oder verhält sich genauso? Dann wäre es immer noch überflüssig.

    Ich dachte, das Verhalten von U1/U2 ist bekannt.


    Die lesen bzw. schreiben den gesamten Block also alle 256 Byte, komplett unverändert. Man kann sie vom Computer aus auch lesen bzw. schreiben.


    D.h., die Befehle haben unterschiedliche Anwendungsgebiete: B-R und B-W sind für Daten, die man in Blöcken platzieren will und deren Länge (<= 254) erhalten bleiben soll. U1/U2 hingegen sind dafür die, low-level den Inhalt der Diskette auszulesen.


    Das geht sogar soweit, dass in manchen Publikationen zur 1541 behauptet wird, B-R und B-W seien kaputt. Man hat offenbar dafür keinen Anwendungsbereich gesehen (und tatsächlich, das Verhalten von B-R und B-W könnte man mit sehr wenig Aufwand mit U1/U2 nachbilden - umgekehrt aber nicht so einfach, da bräuchte man noch Unterstützung durch M-R und M-W und Manipulationen an internen Strukturen).


    Wenn etwas überflüssig ist, dann B-R und B-W, nicht aber U1 und U2.

  • Ja, die B-R und B-W sind nicht als Befehle geeignet um ganze 'Blöcke' im Sinne von Disk Blocks zu lesen oder schreiben - genau aus genannten Gründen mit der Record Lenght. IIRC das folgt der Logik der REL Records des letzten Blocks einer Datei. Insb. Beim Schreiben wird auch in das erste zweite Byte die Länge des Record geschrieben.


    U1/U2 sind dann dafür da, ganze Blöcke zu lesen und zu schreiben. IIRC kamen die aber erst in DOS 2 - ich meine in DOS 1 sind die noch nicht drin, kann mich aber auch irren


    Edit: ich hab das jetzt nach der Beschreibung von IchBinAlt korrigiert. Aber so richtig will mein Gedächtnis das nicht akzeptieren... ich meine doch dass es das erste Byte das Blocks als Länge nimmt und nicht das Zweite. Aber das muss ich dann mal testen...

  • Wie ich oben bereits geschrieben hatte, habe ich U1 und U2 in einem 2040-Manual von 1979 gefunden.


    Ich habe mal in meine alten Programme reingeschaut und da habe ich auch U1 und U2 verwendet. Also damals kannte ich wohl den Unterschied. ;)

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Edit: ich hab das jetzt nach der Beschreibung von IchBinAlt korrigiert. Aber so richtig will mein Gedächtnis das nicht akzeptieren... ich meine doch dass es das erste Byte das Blocks als Länge nimmt und nicht das Zweite. Aber das muss ich dann mal testen...

    André, du solltest mir nicht alles glauben sondern selber recherchieren. ;)


    Ja, du hast recht: Nur das erste Byte wird als Länge genommen. Da war meine Erinnerung falsch.

    Ist so in den Handbüchern von 1540/1541/1571/1581 dokumentiert, andere Laufwerke habe ich mir nicht angeschaut.

    Auch die ROM-Dissassemblys von 1541 und 1571 sprechen da eine eindeutige Sprache.


    Dein Gedächtnis war richtig, meins falsch.