RSX Module programmieren für CP/M 2.2 (=RSM) - schon jemand probiert ?

  • Hat jemand schon mal für CP/M 2.2 (nicht 3.0) RSX Module programmiert ?


    Es gibt zwar von DR offiziell dazu nichts, wohl aber im Netz, bspw. auf https://hc-ddr.hucki.net/wiki/doku.php/cpm/rsm/ct (basierend auf einem Artikel der c't 1/1987).

    Wäre deshalb interessant, weil man dann auch einen Tastaturtreiber für englischsprachige CP/M Versionen gleichartig zum MS-DOS Keybgr programmieren könnte...


    Gruß Peter

    "The biggest communication problem is we do not listen to understand. We listen to reply." - Stephen Covey


    Webseite und Blog ist immer noch - seit fast 20 Jahren - online.

  • Meine erste Idee war, dass man damit ein besseres Floppy Format für den c64 + 1541 coden könnte. Also die Sektoren ummappen, so dass man 170kb statt 120 hat.


    Auf jeden Fall gäbe es da ne Menge toller Anwendungen für!


    Toller Fund von Dir!

  • Das musst Du nicht. Du kannst relativ einfach aus 35 Spuren 40 Spuren machen, das bringt auch schon mehr Platz.

    Diese Änderung sollte sehr einfach sein. Vielleicht kann man sogar den DPB einfach abändern, und das könnte auch schon reichen, gesetzt der Fall die Disketten sind mit 40 Spuren vorher mindestens 1x formatiert gewesen.


    Das CP/M BIOS für den C64 gibt es ja bekanntlichermaßen als Source Code.

    "The biggest communication problem is we do not listen to understand. We listen to reply." - Stephen Covey


    Webseite und Blog ist immer noch - seit fast 20 Jahren - online.

  • Ja, aber Du brauchst im cp/m ja eine konstante Anzahl von Sektoren pro Spur, was die 1541 nicht hat. Deshalb muss man doch die Sektoren umrechnen, dachte ich.

  • Da gibt es einen Unterschied zwischen dem formatierten Disketten (außen mehr Sektoren als innen) und dem logischen Format das CP/M nutzt, es werden eben nicht alle Sektoren in den äußeren Spuren genutzt.

    Daher kann man auch die Spuranzahl ohne Probleme ändern.

    "The biggest communication problem is we do not listen to understand. We listen to reply." - Stephen Covey


    Webseite und Blog ist immer noch - seit fast 20 Jahren - online.

  • Dann musst Du das CP/M BIOS verändern, da geht kein Weg dran vorbei. Zu finden auf meiner C64 Seite.

    Mein Vorschlag mit fünf mehr Spuren wäre recht einfach realisierbar, besser als gar nichts zu machen...


    P.S.: Die viele Arbeit das so anzupassen, dass das im CP/M (!) so aussieht, wäre pervers:

    Stattdessen ist es ja das hier momentan:


    Track Sectors/track #Sectors

    1-35 17 595 (-17 für die BAM Spur !)


    Mein Vorschlag wie gesagt wäre:

    Track Sectors/track #Sectors

    1-40 17 680 (-17 für die BAM Spur!)


    Eine Spur geht durch die gewollte Kompatibilität mit dem C64 Format immer (!) flöten.

    "The biggest communication problem is we do not listen to understand. We listen to reply." - Stephen Covey


    Webseite und Blog ist immer noch - seit fast 20 Jahren - online.

    4 Mal editiert, zuletzt von Peter z80.eu ()

  • Beim nächsten Treffen reden wir mal drüber. Ich hatte mit Tale schonmal paar Kombinationen durchgerechnet und auch mal bisserl Code zum Umrechnen geschrieben.

  • Scheinbar hast Du Dir das Ganze noch nie im Quellcode angeschaut. Der Blocking/Deblocking Algorithmus in CP/M ist quasi vorgegeben, da kannst Du nicht mutwillig was anderes machen. Schau Dir dazu auch mal das CP/M Alteration Guide am Besten an.

    Du müsstest eine komplette Zwischenschicht mit einer jeweiligen Umrechnung der Sektoren vom reinen "starren" 17-Sektor Format zu einem pro Spur flexiblen Format einziehen.

    Das wirst Du *nie* machen, da bist Du einfach zu gierig. Mach doch einfach erstmal was einfacheres, als das anzudenken aber dann nie auszuführen.

    "The biggest communication problem is we do not listen to understand. We listen to reply." - Stephen Covey


    Webseite und Blog ist immer noch - seit fast 20 Jahren - online.

  • Das meinte ich mit Zwischenschicht.... aber typischerweise ist das kein RSX/RSM und auch kein Programm in der Floppy sondern das passiert i.A. im BIOS. Zur "Boot"-Zeit muss ja auch schon alles so funktionieren wie es soll. Und das CP/M würde das auch nicht mitbekommen dass Du was in der 1541 machst ... also musst Du da sowieso (dann auch) Hand anlegen.

    "The biggest communication problem is we do not listen to understand. We listen to reply." - Stephen Covey


    Webseite und Blog ist immer noch - seit fast 20 Jahren - online.

  • Wenn Du 2 unterschiedliche Formate unterstützt und die z. B. über eine Kennung im 1. Sektor unterscheidest, könnte man ja von einer alten Floppy erstmal booten und das neue Format erst später nutzen.

    Ja es stimmt schon, dass es viel Arbeit ist, für ich aktuell keine Zeit hab.

    Ist wohl was für die Zeit als Rentner. Aber vorher wird es wohl eh kein Treffen geben, also alles im Zeitplan...

  • Korrigiert mich bitte, wenn ich falsch liege, aber das BIOS unterstützt doch 2 Laufwerke?


    Meine Idee war nun, dass man zunächst Laufwerk b (das auch virtuell sein kann, d.h. einen Diskettenwechseln erfordert?) auf das neue Format umstellt. Im Disk Parameter Block ist die Anzahl der Spuren doch eine 16 Bit Variable. D.h. der Wertebereich ist gross genug, um einfach quasi jeden (256 Byte) Sektor der 1541 (nicht den 128 Byte Sektor auf cp/m Seite) als eigene Spur zu sehen. Quasi ein LBA Modus. So hätte man wirklich 0 Verschnitt.


    Das Problem ist nun den LBA-Sektor auf den 1541 Sektor zu mappen. Könnte man, wie Toast_r vorschlug in der 1541 machen. Dort müsste aber schon auf jeden Fall der 40 Spur Code von Peter rein. Und man sollte sich definitiv die Option offen halten, die Bytes schneller an den c64 zu schicken (Fastloader). Weiss nicht, wieviel Platz dann noch in der 1541 bleibt.


    Mit 40 Spuren hätte man dann 768 Sektoren, also 192 kb.


    Ich hab mal angefangen, ins Unreine zu denken, Unten an dem angehängten BIOS ist mal eine Funktion zum Sektor umrechnen. Wahrscheinlich die langsamst mögliche Variante, aber dafür recht kompakt, dachte ich.


    Was meint ihr so?

  • Da muss ich meine Seite schon wieder zitieren. Standardmässig kann das CP/M BIOS des C64 nicht zwei Laufwerke ansprechen.

    Allerdings gibt es dafür einen Patch. Suche auf der Seite einfach mal nach "Two drive CP/M C64 operation" ...

    "The biggest communication problem is we do not listen to understand. We listen to reply." - Stephen Covey


    Webseite und Blog ist immer noch - seit fast 20 Jahren - online.

  • Danke für den Tipp!


    Das könnte man ja in eine geänderte BIOS Version gleich einbauen.


    Was mir aber gerade zu schaffen macht ist der Platz. Wenn man den Code mitten ins BIOS einbaut verschieben sich ja die Tabellen am Ende. Die werden dann von der z80 Seite erstmal nicht mehr gefunden.

    Ich wollte halt die Änderungen so minimal wie möglich halten.

    Aber das wird wohl nix... :(