Hallo Besucher, der Thread wurde 64k mal aufgerufen und enthält 295 Antworten

letzter Beitrag von Ruudi am

CP/M für C64

  • So. Neue Lib erzeugt, wo die fehlenden Teile reinkommen. 74ls197 als Zähler für die Waitstates vom z80 ist schon drin. Schaltung für das Zählen der Takte angefangen.

  • Zum Thema "Wordstar"
    Hat das schon mal jemand am C128 zum Laufen gebracht?

    Das war damals (tm) das einzige (nicht im C128-Lieferumfang enthaltene) CP/M-Programm, das ich tatsächlich mal benutzt habe.

  • Das Thema ist hochinteressant, komischerweise hatte ich das gestern sogar zu Shock am Telefon gesagt. Früher hatte ich mal ein CP/M Modul von Commodore, das war aber irgendwann, irgendwie defekt und dann weggekommen. Mein Vorschlag war es das zu clonen, so dass man dieses Stück exotische Hardware wieder für jeden zugänglich machen kann.


    Natürlich wäre es noch cooler, wenn man das erweitert und macht gleiche eine CP/M Expansion mit 80 Zeichen Modus und ein Paar extras. Theoretisch müsste man doch noch ein ROM integrieren können, welches den Bootloader in die Hardware integriert. Dann braucht man nicht unbedingt die klassische Bootdiskette für CP/M?


    Welches Diskettenformat wird dann mit der 1541 benutzt und wie könnte man klassische CP/M Programme auf die 1541 kopieren? Kann man auch CP/M Programm anderer System wie z.B. CPC dann auf den C64 portieren?


    Gruß
    Tom

  • 1541 kann nur GCR - da werden bei CP/M halt die normalen Sektorformate verwendet und ganz viel weggeschmissen, weil der Zylinder mit der kleinsten Sektorzahl die max. nutzbare Sektorenzahl pro Spur vorgibt. Das alte CP/M-Modul und CP/M 2.2 entstanden vor der 1570/71/81 und unterstützen deshalb auch nicht mit diesen Laufwerken die MFM-Formate, die beim C128 verfügbar sind (falls 1581 überhaupt geht).


    @Schatten: hab's leider nicht im direkten Zugriff - sollte im Netz aber auffindbar sein. Gibt ja einiges an CP/M-Seiten

  • Früher hatte ich mal ein CP/M Modul von Commodore, das war aber irgendwann, irgendwie defekt und dann weggekommen. Mein Vorschlag war es das zu clonen, so dass man dieses Stück exotische Hardware wieder für jeden zugänglich machen kann.

    Ich weiss nicht, ob das eine gute Idee ist - das Ding hat den Ruf, ziemlich empfindlich auf den Hersteller bestimmter Chips in Modul und C64 zu reagieren und ist zudem sehr langsam. Angeblich liegt das daran, dass es eine "Minimalanpassung" eines Apple II-Z80-Karten-Designs an den C64-Bus ist und der C64 wegen der VIC-II-Zugriffe da etwas komplizierter ist.


    Zitat

    Theoretisch müsste man doch noch ein ROM integrieren können, welches den Bootloader in die Hardware integriert. Dann braucht man nicht unbedingt die klassische Bootdiskette für CP/M?

    Ganz ohne Diskette booten wird etwas aufwendiger. Man müsste dafür wohl eine ROM-Disk integrieren, damit das System den CCP (sowas wie COMMAND.COM bei MS-DOS) laden kann oder im System herumpatchen, damit es den beim ersten Laden aus dem ROM kopiert statt auf Disk zu suchen.


    Zitat

    Welches Diskettenformat wird dann mit der 1541 benutzt und wie könnte man klassische CP/M Programme auf die 1541 kopieren?

    Hoffentlich das einseitige Format des C128-CP/Ms, das hat deutlich weniger "Verschnitt" als das vom C64-CP/M-Modul verwendete Diskettenformat.


    Zitat

    Kann man auch CP/M Programm anderer System wie z.B. CPC dann auf den C64 portieren?

    Wenn sie keine CPC-spezifischen Hardwarezugriffe machen (was für CP/M-Software ungewöhnlich wäre) sollten sie auch auf einem C64-CP/M laufen - ggfs. muss man das Programm allerdings auf eine andere Terminalemulation einstellen.


    Könnte das jemand zur Verfügung stellen?

    Du könntest dich mal hier oder hier umschauen.

  • Die Grafik-CP/M-Programme vom CPC wird man nicht übernehmen können, auch wenn die den CP/M-Grafikstandard nutzen. Gibt soweit ich bisher recherchieren konnte keine passenden Grafiktreiber für den Commodore (falls außer CPC überhaupt noch ein System den unterstützt hat...).

  • Die einzelnen Programmdateien zu finden ist nicht das Problem. Die dann aber auf eine Lauffähige CP/M C128 Diskette zu bekommen schon das größere.
    Ein fertiges D64 Image wäre ein Hit.

  • http://biosrhythm.com/?p=1220


    Mein erster Versuch mit ctools schlug fehl, weil dessen Sourcen schon zu alt waren, um diese mal eben auf einem modernen Linux zu kompilieren. Es geistert aber noch eine aktualisierte Version im Netz rum, bin aber noch nicht dazu gekommen, sie zu testen.


    Btw... Zork auf nem C64-Screen im Standardfarbschema (hellblau/blau) sieht irgendwie falsch aus.

  • Btw... Zork auf nem C64-Screen im Standardfarbschema (hellblau/blau) sieht irgendwie falsch aus.

    Bevorzugst du das weiss-auf-grau der späteren Infocom-C64-Releases?

  • Ich weiss nicht, ob das eine gute Idee ist - das Ding hat den Ruf, ziemlich empfindlich auf den Hersteller bestimmter Chips in Modul und C64 zu reagieren und ist zudem sehr langsam. Angeblich liegt das daran, dass es eine "Minimalanpassung" eines Apple II-Z80-Karten-Designs an den C64-Bus ist und der C64 wegen der VIC-II-Zugriffe da etwas komplizierter ist.

    Ganz ohne Diskette booten wird etwas aufwendiger. Man müsste dafür wohl eine ROM-Disk integrieren, damit das System den CCP (sowas wie COMMAND.COM bei MS-DOS) laden kann oder im System herumpatchen, damit es den beim ersten Laden aus dem ROM kopiert statt auf Disk zu suchen.

    Hoffentlich das einseitige Format des C128-CP/Ms, das hat deutlich weniger "Verschnitt" als das vom C64-CP/M-Modul verwendete Diskettenformat.

    Wenn sie keine CPC-spezifischen Hardwarezugriffe machen (was für CP/M-Software ungewöhnlich wäre) sollten sie auch auf einem C64-CP/M laufen - ggfs. muss man das Programm allerdings auf eine andere Terminalemulation einstellen.

    Du könntest dich mal hier oder hier umschauen.

    >>Früher hatte ich mal ein CP/M Modul von Commodore, das war aber irgendwann, irgendwie defekt und dann weggekommen. Mein Vorschlag war es das zu clonen, so dass man dieses Stück exotische Hardware wieder für jeden zugänglich machen kann.


    >>Ich weiss nicht, ob das eine gute Idee ist - das Ding hat den Ruf, ziemlich empfindlich auf den Hersteller bestimmter Chips in Modul und C64 zu reagieren und ist zudem sehr langsam. Angeblich liegt das daran, dass es eine "Minimalanpassung" eines Apple II-Z80-Karten-Designs an den C64-Bus ist und der C64 wegen der VIC-II-Zugriffe da etwas komplizierter ist.


    Das alte Modul war empfindlich; in der Tat. Stromversorgung war knapp; das C64 Bus Timing sehr unterschiedlich. Generell läuft auch meine 8 MHz Z80 Karte nur mit einem 6596 R3. R4 und R5 gehen definitiv stabil. Den Grund kenne ich aber leider nicht. Es war keine Minimalanpassung der Aplle Z80 Karte. Nur das Prinzip - shared RAM; RAM-Offset 4K, Z80 in den Taklücken des 6502 aktiv - wurde übernommen. Anders geht es ohne eigenes RAM auch kaum. Ich habe die Adressraumübersetzung mit dem PROM eingeführt, um mehr RAM nutzen zu können. Damit gab es maximal 56K mit 40 Zeichen und 52K mit 80 Zeichen. Dazu die Wait-State Schaltung für 8 MHz, die vom VIC kommen. Die 8 MHz Z80 kamen damals Ende auf und sind heute noch verfügbar.



    >> Theoretisch müsste man doch noch ein ROM integrieren können, welches den Bootloader in die Hardware integriert. Dann braucht man nicht unbedingt die klassische Bootdiskette für CP/M?


    Das ganze CP/M BIOS und BDOS ist Disketten-orientiert.


    >> Kann man auch CP/M Programm anderer System wie z.B. CPC dann auf den C64 portieren?


    Ja, sofern ohne Grafik. Wir haben damals an der Uni alle relevanten CP/M Programme - Tools wie Anwendugnsprogramme MuMath, Fancy Font, WS, Multiplam, TurobPascal etc. - transferiert. Zum teil vo Apple mit einem Transferkabel; zum Teil von CP/M Systemen via EPROM: Programm in den Speicher; Warmstart; Speicher ins EPROM. Auslesen am C64; CP/M starten, speichern des Speicherinhaltes als CP/M Programm mit DDT. Hat bis ca. 32 KByte gut funktioniert. WASH und andere Programme liegen im C64 CP/M Format vor.


    Wenn die beiden Platinen mal nachgemacht sind, transferiere ich die alten Disketten mal ins D64 Format.


    Zudem habe ich die SFD1001/8250 ins BIOS integriert: Dann hatte man am IEEE Bus - deswegen ist der auch auf der Z80 Platine - die "grossen" Disketten mit 1 MB auch unter CP/M. Das Format war ähnlich aufgebaut wie das C64 CP/M Format. BAM (sprich: Directory) aussparen im BIOS; konstante Sektorzahl von den innersten Spuren. Und natürlich die CP/M Sektoren in der BAM als belegt markiert. Es bleibt also ein wenig CBM Speicherplatz neben den CP/M Sektroen auf der Diskette.


    Das ganze machte jedoch nur Spass, wenn man auch eine 80 Zeichenkarte dazu hatte. Die musste zu der Z80 Karte passen und brauchte auch Grundfunktionen für eine Terminalemulation wie Cursorpositionierung. Sowas braucht das CP/M BIOS. Die 80Z Karte von Jann Datentechnik passte: Die wäre nun ebenso nachzubauen. Die Bilder weiter oben zeigen beide Platinen.


    Mein Angebot steht :-)

  • Ich wollte nur den z80 Teil und dann evtl. den 80 Zeichen Teil in die Schaltung machen, aus der später eine Platine werden könnte. Das freie Eagle hat bei Schaltung und Layout eine Größenbeschränkung.


    Zudem müsste erstmal so eine 80 Zeichen Karte fürs Reverse Engineering aufgetrieben werden.


    C= z80 Modul hab ich hier, aber ich kann mit keinem meiner c64 ein cp/m vollständig booten.


    Für die 1541 wäre eine Sektor-Übersetzung cool, um mehr Diskettenspeicher nutzen zu können. Das soll mal in das Programm rein, welches ich Tale-X mal gegeben hab. Damit möchte ich entsprechende d64 Images erzeugen und sie dann per Zoomfloppy auf echte Disketten schreiben.


    Ist aber noch ne Menge Arbeit.


    Wenn mehr Leute was beitragen würden, ginge das schneller...

  • Die Sektor-Übersetzung hat (mindestens) 2 Baustellen:

    • Das Tool zum Bearbeiten der CP/M-D64 (imho das kleinste Problem)
    • Zwingend Anpassung von CP/M 2.2 damit das neue Format erkannt wird (woran erkannt wird?)
    • Optimal Anpassung von CP/M 3.0 für die 128er


    Ich muss mir mal anschauen, wie das GCR-Format beim CP/M 3.0 aussieht. Nachdem ich Unseens Beitrag gelesen hatte, fiel mir wieder ein, dass die Formate von CP/M 2.2 und 3.0 unterschiedlich waren. Wenn das gut genug ist, bräuchte man nix neues drechseln...

  • Das Format vom CP/M 3.0 sieht ganz gut aus (siehe Mirkosofts CP/M-Seite): 680 von 683 Sektoren werden genutzt . Falls nichts dagegenspricht, wäre es sinnvoll, das in das "Karten-CP/M" (und das Tool) einzubauen. Bringt mehr, als jetzt noch ein weiteres Format aus dem Boden zu stampfen, für dass es Null Unterstützung gibt. Außerdem können dann C64 CP/Mler leichter mit C128 CP/Mler Daten tauschen.

  • Wäre das nicht mal ein guter Anlass, auf ein anderes Programm umzusteigen?

    Ich bin ja eben für dieses Projekt auf Eagle umgestiegen und lerne es gerade. Deshalb geht es doch so zäh! Vorher hab ich Kicad benutzt, aber dafür fehlen jede Menge Bauteile, so dass man sich die erst selbst erstellen muss. Das hält aber extrem auf. Bei Eagle gibt es zumindest die allermeisten verwendeten Teile. Den Modulanschluss wird man halt noch erstellen müssen, aber das Editieren geht in Eagle recht gut, wenn man erstmal weiss, wie es geht.


    Vor Kicad hab ich gschema benutzt, aber dafür gibt es noch weniger Teile und das UI ist...na ja...


    Hab noch bisserl Erfahrung mit Pads, aber das gibt es wohl schon lange nicht mehr.