CPM-65 für den Junior ][

  • Seit Anfang Juli läuft im kleinen Kreis ein Projekt CPM-65 auf den Junior ][ zu portieren. Mittlerweile sind wir im Alpha-Teststadium angekommen, d.h. Code und Tools liegen in einem privaten GITHUB-Repo und wir versuchen derzeit CPM-65 zum Booten zu überreden. Derzeit sind wir zu Dritt. Mutige Tester sind willkommen. Sobald wir das Beta-Stadium erreichen, d.h. ein bootfähiges System vorliegt, das auch von normalen Usern installiert werden kann, were ich das Repo für alle öffentlich schalten - versprochen.


    Eine Beschreibung zu CPM-65 findet ihr hier : CPM-65 für 6502-Systeme


    Und das Originalsystem für meinen stark modifizierten Junior Computer liegt hier: https://github.com/Dietrich-L/CPM-65


    Nur noch etwas Geduld ...


    Dietrich

    Meine Computer: Elektor Junior, EPSON HX-20, Robotron PC1715, Poly-Computer 880, Schneider CPC464, APPLE II+, VIKTOR V386PX

    Mein Betriebssystem: CPM-65

  • Und hier noch ein kleiner Appetizer von meinem Testsystem...


    Dietrich

    Bilder

    Meine Computer: Elektor Junior, EPSON HX-20, Robotron PC1715, Poly-Computer 880, Schneider CPC464, APPLE II+, VIKTOR V386PX

    Mein Betriebssystem: CPM-65

  • Erster Erfolg- CPM-65 Bootet auf dem Junior ][.

    Norbert hat geschafft. Nun testen wir, ob der Rest auch funktioniert


    Dietrich


    PS. Die Fehlermeldung interessiert im Moment nicht. DIR gibt es nicht auf der Bootdiskette.

  • Kleiner Zwischenbericht.

    CPM-65 bootet und einige Programme laufen. Es gibt aber noch Kollisionen - mindestens noch eine - in der Zeropage, die wir noch auflösen müssen. Das ist leider etwas tricky zu finden, da die betroffenen Programme sang- und klanglos abstürzen und der Debugger bisher auch..

    Also noch etwas Geduld.


    Als Teaser hier etwas was funktioniert: SYSINFO

    Meine Computer: Elektor Junior, EPSON HX-20, Robotron PC1715, Poly-Computer 880, Schneider CPC464, APPLE II+, VIKTOR V386PX

    Mein Betriebssystem: CPM-65

  • Leider ist über Sommer nicht so viel passiert. Das liegt natürlich am guten Wetter, aber auch daran, dass ich selbst keinen Junior ][ besitze sondern nur einen Junior.

    Ich bin daher immer noch stark auf Tester angewiesen. Wenn ihr also Zeit und Lust habt, dann hebt hier gerne die Hand. Ich bringe euch dann ins Spiel.


    Dietrich

    Meine Computer: Elektor Junior, EPSON HX-20, Robotron PC1715, Poly-Computer 880, Schneider CPC464, APPLE II+, VIKTOR V386PX

    Mein Betriebssystem: CPM-65

  • Was lange währt ...

    Seit heute ist CPM-65 für den Junior Computer ][ verfügbar.


    Ihr findet die gesamte Software mit Dokumentation unter GitHub Repository CPM-65 für den JC ][. Dort findet sich auch ein Package zum Download mit der erforderlichen CONFIG.SYS und den Disk Images sowie eine Kurzanleitung in Englisch zur Vorbereitung des SD zum Booten von CPM-65.


    Die Software ist sicher nicht fehlerfrei. Daher freue ich mich über jeden Fehlerbericht und jeden Hinweis für Verbesserungen. Amliebsten wäre mir, wenn ihr dazu ein Thema auf meinem GitHub_Repository aufmachen würdet und dort am besten auf Englisch. Dann können alle gut mitlesen. Gerne könnt ihr mir aber auch hier Feedback geben.


    An dieser Stelle nochmal herzlichen Dank an 2ee und NorbertJ für die vielen Testrunden. Ohne euch wäre es nicht gegangen.


    Viel Erfolg mit dem CPM-65

    Dietrich


    Meine Computer: Elektor Junior, EPSON HX-20, Robotron PC1715, Poly-Computer 880, Schneider CPC464, APPLE II+, VIKTOR V386PX

    Mein Betriebssystem: CPM-65

  • CPM-65 und DOS-65 sind sich sehr ähnlich. Ich habe mal versuchsweise 2 Programme von CPM-65 auf DOS-65 übertragen - klappt gut. Aus meiner Perspektive kann ich aber durch so einen Port auch keine Verbesserung sehen. Daher habe ich derzeit nicht vor, das anzugehen.

    Es gibt noch genug andere Projekte ;)


    Dietrich

    Meine Computer: Elektor Junior, EPSON HX-20, Robotron PC1715, Poly-Computer 880, Schneider CPC464, APPLE II+, VIKTOR V386PX

    Mein Betriebssystem: CPM-65

  • Wie versprochen kommen hier ein paar Erläuterungen zu CPM-65 auf dem Junior Computer ][, damit der Einstieg möglichst leicht fällt.


    Vorbemerkung

    Alle Quellen und die gesamte Dokumentation liegen auf GitHub unter https://github.com/Dietrich-L/CPM-65_for_JUNIOR_COMPUTER_II. Dort liegen immer die neuesten Versionen. Evtl. aufgetretenen Fehler sind unter Issues und Verbesserungsvorschläge unter Discussions nachzulesen. Es wäre mir am liebsten, wenn ihr eure Themen dort abladet, weil ich auch nach längerer Zeit immer eine gute Übersicht sichergestellt ist. Ich freue mich aber auch über Feedback direkt hier im Thread.


    Und jetzt gehts los ...


    Die Installation von CPM-65 auf dem JC ][


    Ihr benötigt einen JC ][ mit Basisplatine und I/O-Card. Auf der I/O-Carg muss der SD-Card Slot installiert sein. Es sollte jede SD Card von ca. 64 MB bis 2 TB funktionieren. Ich nehme meistens 4GB-SDs. Die SD bitte neu formatieren, damit es keine Konflikte mit schon vorhandenen Datenstrukturen gibt. Wichtig: die SD muss einen MBR (Master Boot Record) haben und die Partition 1, das ist die, die wir für CPM-65 nutzen, muß FAT16 oder FAT32 formatiert sein.


    Unter Windows ist das alles ganz einfach: SD in den Leser, im Explorer Rechtsklick auf das SD-Laufwerk, Formatieren anwählen, Schnellformatierung markieren und Starten anklicken. Und schon habt ihr eine passend formatierte SD-Card.

    Nun einfach die forum.classic-computing.de/index.php?attachment/187498/



    Im 2. Schritt einfach den gesamten Inhalt von CPM-65 V0.9.zip auf die SD kopieren. Auf der SD sind nun der Bootloader BOOT.SYS und 4 Disk-Images für CPM-65 geladen. Mit dabei ist auch diskdefs - wozu diese Datei gut ist, dazu komme ich in einer anderen Folge.


    Die so vorbereitete SD wird nun in den Junior gesteckt und mit RESET gebootet. Wenn alles geklappt hat, erscheint nun ein Auswahlmenue, in dem ihr das Image, das ihr booten möchtet, auswählen könnt


    forum.classic-computing.de/index.php?attachment/187504/


    Ihr solltet das CPM-65.IMG durch Eingabe der angezeigten Nummer auswählen und kommt so zum CPM-Prompt Laufwerk A - Hurra


    Das schwierigste ist nun geschafft - CPM-65 läuft und erwartet eure Befehle.


    Um einen ersten Überblick zu bekommen, lasst ihr euch am besten erstmal das Direktory ausgeben - also 'D' und RETURN tippen und schon seht ihr, was auf dem Image so drauf ist.

    &pageNo=59

    forum.classic-computing.de/index.php?attachment/187505/


    ... etwa so, nur dass bei euch viel mehr drauf ist.


    Was da alles drauf ist und wie man die anderen Disk Images auf die Laufwerke B:-D: mounted dazu mehr in der nächsten Folge.


    Bis dahin viel Spass beim Probieren. Kaputtgehen kann ja nichts, was sich nicht wiederherstellen ließe.


    Dietrich

  • Hört sich super an. Müsste mich mal nächsten Winter dransetzen, daß ganze auf den originalen zu Portieren. Also zumindest den SAMSON/EC65. Oder siehst Du da grundsätzliche Probleme, weil der halt keine SD-Karte unterstützt und daher nur die 160k Disketten hat?

  • Nein, ich sehe da keine grundsätzlichen Probleme. Es muss lediglich das BIOS angepasst werden und da vor allem die Routinen für das Lesen und Schreiben von 256 Byte-Blöcken auf Diskette. Für die UDC-Karte von Elektor habe ich fertige Routinen - CPM-65 ist ja auf einem modifizierten Original-Junior entwickelt worden.


    Für das ganz alte OHIO-Disketteninterface müsste man neue Routinen schreiben. Wenn ich mich recht erinnere, können da nur komplette Tracks von 2kB gelesen und geschrieben werden. Da braucht es also einen Track-Buffer und entsprechenden Blocking-deblocking Code. Da ich das OHIO-IF für technisch schlecht halte, möchte ich das nicht in Angriff nehmen.


    Dietrich

    Meine Computer: Elektor Junior, EPSON HX-20, Robotron PC1715, Poly-Computer 880, Schneider CPC464, APPLE II+, VIKTOR V386PX

    Mein Betriebssystem: CPM-65

  • Nachdem ich gestern die Screenshots irgendwie gelöscht habe - hier sind sie:


    Bootscreen mit Imageselektion


    Directory


    Und als Appetizer noch das beliebte Startrek



    Viel Spass


    Dietrich

    Meine Computer: Elektor Junior, EPSON HX-20, Robotron PC1715, Poly-Computer 880, Schneider CPC464, APPLE II+, VIKTOR V386PX

    Mein Betriebssystem: CPM-65

  • CP/M-80 und CPM-65 - eine kleine Einführung und ein Blick auf die Unterschiede


    CP/M-80

    CP/M-80 wurde 1974 von der Firma Digital Research entwickelt. CP/M steht dabei für 'Control Program for Microcomputers'. CP/M-80 läuft auf den Prozessoren 8080 und Z80. Das Betriebssystem besteht aus 3 aufeinander aufbauenden Schichten (BIOS, BDOS und CCP) sowie einer Reihe von Dienstprogrammen. Das logisch klare Schichtenmodell war damals nicht selbstverständlich. Es erlaubte die Anpassung an unterschiedliche Hardware ausschließlich durch Anpassung des BIOS zu erledigen. BDOS, CCP und alle praktisch Programme blieben unverändert.

    Das BDOS bot eine standardisierte Schnittstelle zur I/O von Zeichen und zum blockweisen Zugriff auf Daten in Dateien auf einem Massenspeicher. DIes war die Basis für eine große Zahl von Programmen vor allem für den Bürobereich in kleinen und mittleren Firmen. Bis zum Aufkommen des IBM-PC und MS-DOS um 1983 war CP/M-80 vor allem in der Version 2.2 das dominierende Betriebssysten auf Büro-PCs.


    CPM-65

    In der 6502-Welt hat es ein standardisiertes Betriebssystem nie gegeben, obwohl die Vorteile doch erheblich sind. CPM-65 greift die nun Grundlogiken von CP/M-80 V2.2 auf und setzt sie auf 6502 Maschinen um. Dabei wurden auch einige Änderungen gemacht, die die spezifischen Eigenschaften der 6502 CPU zur Geltung bringen:

    • Die Blockgröße beim Zugriff auf Dateien wurde von 128 Bytes auf 256 Bytes verdoppelt. Dabei erlaubt die indirekte, indizierte Adressierung einen sehr effizienten Datentransfer. Die Struktur der Verzeichniseinträge wurde aber beibehalten, damit man auf dem PC mit üblichen Tools, wie z.B. CIFE auf die Disketten (-image) zugreifen kann.
    • Der Einsprung ins BDOS erfolgt über einen festen JMP-Befehl auf $00F0 statt über den Software-Interrupt des 8080
    • Die Zeropage wird so weit als möglich für die Programme freigehalten. CPM-65 benötigt nur die Adressen $E0 - $FF
    • Der Stack liegt fest auf $01FF und wächst abwärts
    • Die Programme liegen beim JC ][ auf $2000 (Standard $200). Das liegt an der Speichernutzung des ROMs. Der für Programme nutzbare Speicher ist dann $2000 - $CC00, also 43 kB. Alle Programme müssen für diese Speicheradressen neu assembliert werden. Das ist in den fertigen Packages natürlich schon gemacht.
    • Der CCP kennt keine eingebauten Commands. Er kann lediglich das Laufwerk wechseln und Programme aufrufen. Das hält ihn kompakt. Alle Funktionen, die man von CP/M-80 kennt stecken also in separaten Programmen und werden einfach durch Eingabe des Programmnamens aufgerufen

    DAS CP/M-Dateisystem

    CP/M-80 hat ein recht einfaches Dateisystem, das für die verfügbaren Massenspeicher der Zeit absolut adäquat war. Niemand konnte sich damals vorstellen, mit welchen Datenmengen man 50 Jahre später hantieren würde und die alten 8-Bit-Prozessoren wären damit auch heillos überfordert gewesen. CP/M-80 V2.2 führt also eine einfache Liste an Dateien mit deren Größe und Speicherort auf dem Massenspeicher. Die maximale Größe eines Laufwerks ist 16 MB. Es gibt nur ein Verzeichnis, keine Unterverzeichnisse. Die einzige Möglichkeit, Dateien auf einem Laufwerk zu strukturieren ist ein recht umständlicher Mechanismus mit bis zu 16 Userbereichen. CP/M führt eine Belegungstabelle der Dateien auf dem Speichermedium im Arbeitsspeicher. Diese Tabelle wird bei jedem Schreibzugriff dynamisch erzeugt. In dieser Architektur machen sehr große Massenspeicher keinen Sinn.


    Die CPM-65 Disk Images

    Der JC ][ bietet auf seine I/O-Card eine SD-Karte als Massenspeicher an. Die SD ist ja als FAT-Laufwerk mit einem MBR formatiert, also ganz normal. Mit diesem Dateisysten kann CPM nativ nicht arbeiten. Es wäre möglich, diese Fähigkeit im BIOS zu implementieren. Das BIOS würde dann aber ziemlich groß - etwa 12 kB - und die Performance würde leiden. Da unter CPM große Massenspeicher eh keinen Sinn machen, wurde im BIOS für den JC ][ eine Verwaltung von DISK Images mit 1 MB Größe implementiert. Diese Images können von einem Hilfsprogramm auf die verfügbaren Laufwerke gemountet werden. Derzeit beherrscht das BIOS 4 Laufwerke A: - D: . Das beim Booten ausgewählte Laufwerk ist immer A:.


    Wenn ihr euch also nach erfolgreichem Booten mit D das Directory ausgeben lasst, seht ihr die Dateiattribute (derzeit nicht genutzt), den Dateinamen (immer 8 Zeichen Filename und 3 Zeichen Extension) und die Dateigröße in records (1 record = 128 Bytes, 2 records = 1 page) und die Dateigröße in kB. In CP/M 2.2 gab es leider keine Verwaltung von Zeitstempeln. Schade, der JC][ hätte ja eine Uhr....


    Systemstatus

    Nun wäre es vielleicht interessant, sich den aktuellen Systemstatus anzuzeigen. Dazu dient SYSINFO, ein compiliertes FORTH-Programm. Richtig gelesen - das FIG-FORTH in CPM-65 hat einen Mechanismus, jedes Forthprogramm als Standalone-Programm zu erzeugen.

    Praktisch, wenn man wissen möchte, welche BIOS-Version man auf der Bootdisk hatte. Die Ausgabe für die PROM-Version ist übrigends ein Artefakt. Da muss ich für den JC ][ noch nacharbeiten.


    Und nun die Belegung unserer Diskette mit dem Programm ALLOC

    Interessant - schon ziemlich voll..


    Der Versuch, nun mit 'D B:' den Inhalt von Drive B: auszugeben, scheitert mit einer Fehlermeldung.

    Richtig - es ist ja auf B: noch kein Image gemountet. Dazu benötigt man das Programm SD-UTIL. Dazu mehr in der nächsten Folge.

    Dietrich

  • Hallo zusammen.

    Nach einer deutlich längeren Pause, als geplant - es dauert ja immer länger als gedacht - gehts nun endlich weiter. In der Zwischenzeit war ich nicht untätig, sondern habe nun endlich meinen eigenen JC-][ aufgebaut und am Laufen, so dass ich alles auf der Original-Hardware testen kann.


    Und schon gibt es die erste Fehlerkorrektur:

    In BASIC.COM ist noch ein Fehler, der verhindert, dass Programme geladen werden können. Eintippen geht, SAVE auch, aber laden halt noch nicht. Die Fehlersuche läuft noch. Und in DEBUG ist noch ein Bug, der bei den Trace-Befehlen zum Absturz führt. Da ist der Fehler klar und Abhilfe in Arbeit.


    Aber nun zu der spannenden Frage, wie man die im Paket enthaltenen Images in das Filesystem von CPM-65 mountet. Dazu CPM-65 booten und am Prompt SD-UTIL aufrufen. Das sollte dann etwa so aussehen:



    Als erstes wollen wir mal die Befehlsübersicht sehen und geben ein '?' ein


    Nun das ist erstmal ziemlich viel. Das Tool kann ja auch eine Menhge nützliche Dinge mit der SD anstellen. Unter anderem kann man jeden Sektor ansehen und editieren. Da sollte man aber schon genau wissen, was man tut. Sonst ist schnell mal das CPM-65 zerschossen.


    Im nächsten Schritt wollen wir nur mal sehen, welche Images so da sind und geben 'I' ein. Groß- oder Kleinschrift ist übrigends egal.


    Das sieht ja fast aus, wie der BOOT-Screen und das sollte es auch. Wir haben ja immer noch die gleiche SD im Leser - hoffe ich. Zusätzlich zeigt diese Ansicht auch, wo genau die Images auf der SD liegen. Das brauchen wir im Moment aber nicht.


    Nun wollen wir die zusätzlichen Images mounten. Auf A: liegt ja immer das BOOT-Image und das lassen wir im Moment auch so. Auf B: kommt BASIC.IMG, auf C: FORTH.IMG und auf D: BLANK.IMG. Das geben wir nun in einem Rutsch ein, getrennt durch ein ';'



    Und weil wir diese Auswahl künftig immer nach dem Booten aktiv haben wollen, pushen wir sie mit deinem 'P' in den BIOS-Bereich des CPM-65. Dort ist unsere Konfiguration vor allen Programmen geschützt und wird mit dem BIOS geladen. Sie kann natürlich mit SD-UTIL jederzeit geändert werden.


    Das wars erstmal für heute. Wir verlassen SD-UTIL mit 'X' und schauen uns nun die Directories der neu gemounteten Laufwerke erstmal an.


    Bis zum nächsten Mal - Urlaubsbedingt erst Ende des Monats


    Dietrich

    Meine Computer: Elektor Junior, EPSON HX-20, Robotron PC1715, Poly-Computer 880, Schneider CPC464, APPLE II+, VIKTOR V386PX

    Mein Betriebssystem: CPM-65

  • Es waren doch noch einige Fehler im System:

    BIOS V0.9 - Speicherzellen $FC/$FD müssen im BIOS gepuffert werden, da sie auch von einigen ROM-Routinen benutzt und dabei zerstört werden

    BASIC 1.6 - Das IRQ-Handling des JC-][ verträgt sich nicht mit CPM-65. Daher muß der IRQ dauerhaft abgeschaltet werden. Anm. Ich bin da mit Jörg im Gespräch. Eine Lösung ist angedacht, aber noch nicht umgesetzt.

    SYSINFO - Die ROM-Version wird nun mit Haupt und Nebenversion ebenfalls ausgegeben.


    CPM-65 Release V0.91 liegt auf https://github.com/Dietrich-L/…NIOR_COMPUTER_II/releases und hier im Anhang


    Alle, die die Beispiele in den nächsten Posts nachvollziehen möchten, sind gebeten, die neuen IMG-Files zu benutzen. Bitte überzeugt euch mit SYSINFO, dass ihr auf BIOS V0.9 seid - danke



    Dietrich

  • Housekeeping

    Die wesentliche Aufgabe von CPM-65 ist die Verwaltung von Files auf dem Speichermedium. Dazu liefert CPM-65 eine Reihe von Funktionen mit. Jede Funktion ist für sich in ein Hilfsprogramm gepackt, das mit den passenden Parametern aufgerufen werden muß, um seine Aufgabe zu erfüllen.

    Bevor wir mit diesen Programmen beginnen, brauchen wir als erstes eine Übungsdiskette. Dazu kopieren wir in Windows oder LINUX das Disk Image BLANK.IMG, benenen die Kopie in WORKDISC.IMG um und kopieren das Image auf unsere SD-Karte.

    Nun booten wir das Image CPM-65, wie gewohnt und installieren mit SD-UTIL WORKDISK.IMG in Laufwerk B:. Wer möchte, kann diese Kombination mit P permanent machen - das muß aber nicht sein. WORKDISK bleibt in B: bis wir entweder ein anderes Image mounten oder neu booten.

    Bisher ist WORKDISK.IMG ja noch leer. Mit D B: können wir uns davon überzeugen

    Die Fehlermeldung 'File not found' sagt uns, dass das Image in der Tat leer ist. Das können wir ändern, indem wir mit COPY *.COM B: mal eben einen SChwung ausführbaren Programme von A: nach B: kopieren. Copy fragt dabei bei jedem File, ob dieses kopiert werden soll - wir lassen die FORTH*-Files weg. Zum einen brauchen wir sie nicht, zum anderen steckt im BIOS noch ein Fehler, der das Kopieren abbricht, wenn zu viele Files kopiert werden.

    Mit B: wechseln wir das Laufwerk und sehen mit D nach, ob alles da ist - es sollten 52 kBytes an Files sein. Vorsicht: D lässt uns in der aktuellen Version immer nach A: zurückfallen. Auch das wird noch geändert.

    Nun fällt uns ein, dass wir die CPM-65-Files nicht brauchen - also weg damit mit ERASE b*.* . Aus Sicherheitsgründen fragt ERASE bei jedem File nach, ob wir es tatsächlich löschen wollen. Ach ja, BROWSE.COM möchten wir im Moment behalten.

    Und ja, die meisten Programme haben eine Hilfefunktion eingebaut. Wenn man also nur ERASE eingibt, wir der Kommandozeilenaufruf angezeigt und ERASE tut nichts. Und der guten Ordnung halber löschen wir auch CCP.COM.


    In der Programmsammlung auf B: ist ein Programm namens CPUTYPE.COM. Das gibt aus, ob wir eine 6502 oder eine 65C02 im JC-][ haben. Der Name des Programms sagt uns aber nicht zu - CPUTEST.COM wäre doch viel besser. Nichts leichter als das: RENAME CPUTYPE.COM CPUTEST.COM bewerkstelligt das.


    Erfahrenen CP/M-lern wird nicht entgangen sein, dass die Reihenfolge der Argumente anders herum ist als in CPM-80: erst kommt das File, das zu bearbeiten ist (Source file), dann kommt der neue Filename (Target file). Das ist die Logik von MS-DOS und die gefiel mir immer schon besser.


    Und damit haben wir die zentralen Programme zum Aufräumen im Dateiensalat kennengelernt.


    Viel Spass beim Probieren


    Dietrich

    Meine Computer: Elektor Junior, EPSON HX-20, Robotron PC1715, Poly-Computer 880, Schneider CPC464, APPLE II+, VIKTOR V386PX

    Mein Betriebssystem: CPM-65

  • CPM-65 V1.0 released


    Liebe JC-][-Fans,

    die Entwicklung von CPM-65 für den JC-][ ist nun so weit gediehen, dass ich mich traue ein V1.0-Release zu veröffentlichen.

    Ein dicker Bug war noch in der V0.9, aber das war hoffentlich der letzte. Alle Quellen liegen wie gehabt unter

    GitHub - Dietrich-L/CPM-65_for_JUNIOR_COMPUTER_II at V1.0
    CPM-65 Port for Junior Computer II. Contribute to Dietrich-L/CPM-65_for_JUNIOR_COMPUTER_II development by creating an account on GitHub.
    github.com



    Also bitte die neue Version aufspielen und weiter Spass haben


    Gruß


    Dietrich