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

  • Noch'n paar Utilities


    Manchmal ist es nützlich, sich den Inhalt eines Textfiles anzusehen, zum Beispiel weil man sicherstellen möchte, die richtige Version vor sich zu haben. Da s kann man mit TYPE filename.ext [/p] machen. Dabei kann man optional den Schalter /P angeben - dann wird die Ausgabe alle 15 Zeilen angehalten und nach Tastendruck fortgesetzt. CTRL-C beendet das Programm vorzeitig.



    TYPE ist ein originäres CP/M-Kommando, aber in manchen Situationen einfach zu unflexibel. Besser geht das mit BROWSE filename.ext .

    Da kann man mit CTRL-R oder CTRL E eine Seite zurückspringen und mit SPACE oder TAB wieder eine Seite weiter, bis man alles gesehen hat, was man sehen wollte.



    NUN haben wir aber genug Durcheinander auf unserer Übungsdiskette angerichtet und möchte wieder ein jungfräuliches Image haben.

    Das macht FDISK d: für uns. Es kopiert die Systemspuren des aktuellen Laufwerks in die Systemspuren von d: und überschreibt das gesamte Directory in d: mit $E5. Das ist der CP/M-Standard für einen frisch formatierten Sektor. Aber aufgepasst - das machen wir nur mit einem Image, was wir tatsächlich leeren wollen.


    Die anschließende Kontrolle mit D zeigt, dass in der Tat alle Files gelöscht sind. Sicherheitskopien sind wichtig!


    Das wars für heute. Nächste Woche wenden wir uns den Programmiersprachen unter CPM-65 zu.


    Dietrich

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

    Mein Betriebssystem: CPM-65

  • Update: CPM-65 V1.1 ist raus, wie immer im GitHub Repository CPM-65 für den JC ][.


    Zitat

    Changes:

    • BIOS uses now standard ROM entry points to become independent from ROM changes
    • BOOT.SYS and SD-UTIL were also adopted to use standard ROM entry points
    • Error corrections in D.COM and XMODEM.COM
    • New Fig-FORTH version with VT100 compatible full screen editor to be used with most populat terminal emulators


    Und hier noch das Paket für Eilige


    Wie immer alle Files auf die SD packen und nicht vergessen, die Images wieder mit SD-UTIL zu mounten.


    Viel Spass

    Dietrich

  • Hallo Dietrich


    habe versucht die Datei BASIC.ASM aus dem Image BASIC.IMG zu extrahieren (mittels SAMCONV.xls).


    BASIC.zip


    Sieht für mich so aus, als ob das Ende fehlt?



    Steht auch so im Imagefile!



    NACHTRAG: Hat sich vermutlich erledigt! Habe noch das File BASIC1.APP gefunden. Dürfte die Fortsetzung dazu sein. (Kenne die Syntax vom 6502-Assembler leider nicht.)



    PAW

  • Korrekt. Die Direktive APP hängt ein weiteres Quellfile an.


    Gruß

    Dietrich

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

    Mein Betriebssystem: CPM-65

  • Hallo Dietrich,


    bei mir stürzt die neue Version unvermittelt ab.



    Was auch bei allen bisherigen Versionen merkwürdig war, ist, dass sie nicht von einer SD-Karte mit mehreren Partitionen gebootet werden konnten. Leg mir doch bitte mal deinen Source für die BOOT.SYS nach. Am besten für CPM-65 V1.0 und V1.1.


    Edit: Ich hab bei mir übrigens noch die letzte stabile BIOS Version 1.1.0 drauf, die noch nicht deine Änderungen beinhaltet.

  • Hallo 2ee,


    ich habe das heute vormittag versucht nachzustellen. Bei mir bootet auf dem ROM 1.1.0 CPM-65 V.0 mit der enthaltenen BOOT.SYS V1.5 nicht zuverlässig. Diverse Meldungen, dann Absturz. Manchmal geht es aber eben doch. Der Fehler ist bekannt und mit BOOT.SYS V1.6 behoben.


    Die aktuelle Version ist BOOT.SYS 1.9. 1.6 und 1.9 gehen mit ROM1.1.0 und natürlich auch mit den neueren ROM-Versionen. Das klappt mit FAT16 und FAT32 als primäre Partition. Leider ist es mir bisher nicht gelungen, auf SDs mit mehreren Partitionen den mit MKBOOT den Bootsektor zu modifizieren. MKBOOT stürzt bei der 2. Partition einfach ab und schreibt nichts.



    Im Laufe des Testens ist allerdings eine SD-Karte verhaltensauffällig geworden - mal geht sie, mal nicht. Dem gehe ich nach.


    Bitte schaue dir trotzdem mein BOOTSYS mal an - es könnten durchaus noch Fehler drin sein.


    Dietrich

  • Hallo Dietrich ,

    mit der BOOT.SYS von oben startet CPM-65 normal. Ich schau mir MKBOOT nochmal an, bzw. werde dir morgen mal die letzte Version hier hochladen, die du dann direkt aus M/OS starten kannst. Ich muss allerdings jetzt erst mal weg, daher erst morgen im Lauf des Tages.

  • Programmieren unter CPM-65 - BASIC

    Ich hatte es ja schon vor Wochen versprochen, aber wie so oft kam etwas wichtiges dazwischen...


    Natürlich hat auch CPM-65 ein BASIC. Auf dem JC-][ hat man da mit EH-BASIC eine tolle Version im ROM, aber die kann man unter CPM-65 nicht benutzen, weil das ROM abgeschaltet ist - im RAM darüber liegt nämlich CPM-65. Also bescheiden wir uns mit dem historisch wertvollen Microsoft-Basic KB9 in der Version des CBM 8032. Das habe ich vor 40 Jahren in einem langen Winter höchstpersönlich per Hand aus einem Printout des Original reassembliert und später mit den notwendigen Erweiterungen zum Laden und Speichern von Programmen erweitert.


    Zu CBM-BASIC brauche ich wohl nicht viel sagen - Details im Handbuch. Die Timervariablen TI, TI$ sind statisch weil ich die Echtzeituhr des JC-][ noch nicht eingebunden habe. Ebenso wird die RND-Funktion immer gleich initialisiert, ist also nicht wirklich RND.


    Man startet mit BASIC [filename]. Trägt filename die Extension 'BAS' und ist ein CBM-BASIC-File, wird es geladen und gestartet. In diesem Fall versuchen wir es mal mit BASIC STARTREK:

    Auf dem BASIC-Image ist auch noch WUMPUS, beides aus dem bekannten Buch von David Ahl.


    Programme gibt man in BASIC ein, wie gewohnt. Gespeichert wird mit SAVE"filename". Die Extension 'BAS' erzeugt BASIC automatisch. Laden geht dann mit LOAD"filename" und mit RUN"filename" wird das Programm geladen und direkt ausgeführt.


    Wie bekommt man aber Programme ins BASIC, die als ASCII Textfile vorliegen? Nun dazu eignet sich die Copy-Paste-Funktion von TERATERM ganz hervorragend. Man muß nur in der Serial Port Config mind. 500ms Delay pro Zeile eintragen, damit die Garbage Collection keine Zeile verschluckt. Das dauert etwas, ist aber wesentlich entspannender als tippen ..


    Viel Freude mit Startrek auf dem JC-][


    Dietrich

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

    Mein Betriebssystem: CPM-65

  • Fig-FORTH


    Neben BASIC gibt es unter CPM-65 eine weitere Programmiersprache: FORTH, hier in der Version Fig-FORTH mit CPM-65 BDOS-Schnittstelle. FORTH ist seit dem Siegeszug von C, C+ und Co bei den Programmierern eher in Vergessenheit geraten. Das ist verständlich, denn auf den modernen Systemen erlauben die verfügberen Ressourcen einen ganz anderen Komfort.


    Für 8-Bit-Maschinen mit maximal 64 kByte Hauptspeicher ist FORTH jedoch die für mich beste Compilersprache. Der Betriebssystemkern ist nur 7 kB groß, das System mit Full-Screen Editor hat 11 kB. Ein kompiliertes FORTH-Programm wie SYSINFO kommt mit 8 kB daher. Damit kann man auf dem JC-][ sehr komfortabel leben.


    FORTH-Applikationen sind kompakt, schnell und komfortabel zu entwickeln. Sie erlauben den direkten Zugriff auf alle Systemressourcen. Ich nutze Forth vor allem für die Entwicklung von Interfacetreibern und Systemprogrammen. Funktioniert das Interface, ist der Treiber sehr einfach in Assembler umzusetzen. Aber auch für die Programmierung von Spielen ist FORTH schnell und systemnah genug.


    Der Preis für all diese Vorzüge ist eine Sprachstruktur, die es dem System leicht macht und an die sich der Programmierer erst gewöhnen muß. Kernelement ist die umgekehrte polnische Notation (UPN). Da kommen zuerst ein oder mehrere Argumente und dann der Operator, der diese Argumente verarbeitet. Etwa so: 1 1 + . Dabei werden die Argumente in der Reihenfolge der Eingabe auf einen Stack gelegt, von dem sie der Operator in umgekehrter Reihenfolge abholt. Das Ergebnis der Operation wird dann wieder auf dem Stack abgelegt und kann vom nächsten Operator verarbeitet werden.


    Doch genug der Vorrede - es geht los. Damit ihr auch was davon habt, solltet ihr euch das neue FORTH.IMG auf die SD ziehen. Ich habe in den letzten Tagen den Fullscreen-Editor auf die VT100-kompatiblen ROM-Routinen des JC-][ angepasst und das Ergebnis heißt FORTH-VT.COM. Und das solltet ihr nun aufrufen.

    Fig-FORTH V1.6 meldet sich. Nun gebt ihr NEW ein - Groß- und Kleinschreibung spielt in FORTH keine Rolle - und sitzt vor einem leeren Screen im Editor. FORTH arbeitet mit SCREENs, die im Falle des JC-][ von 3 .. 19 reicht. Jeder Screen hat exakt 1 kB Größe und liegt in der aktuellen Implementierung im RAM oberhalb von $8000. Das hört sich nach nicht viel an, aber glaubt mir - es reicht dicke. Aus systemtechnischen Gründen ist #3 der erste Screen, 1 & 2 gibt es nicht.

    Nun schauen wir erstmal, was der Editor so kann und rufen mit der ESC-Taste die Hilfeseite auf.

    Traditionell liegen die Cursor-Befehle auf CTRL-EXDS, aber die Pfeiltasten funktionieren auch - jedenfalls unter TELETERM. Damit kann das Eingeben beginnen:

    Programmzeilen werden kontinuierlich eingegeben. Kommt man am Zeilenende in Spalte 64 an, sprint der Cursor in die nächste Zeile, wo man einfach weiterschreiben kann. Das sieht aber furchtbar aus und erschwert die Lesbarkeit.

    Mit ( beginnt ein Kommentar, mit ) endet er. Vor und nach einem Befehl muß ein Leerzeichen stehen, außer natürlich beim allerersten Zeichen auf einer Seite. In Zeile 3 definieren wir unseren ersten Befehl, den Zeilenvorschub nl, also die Ausgabe von $0D und $0A. Da wir im Moment im Dezimalsystem arbeiten müssen wir alle Argumente auch dezimal eingeben. Das könnte man auf Hexadezimale Zahlenbasis umstellen, aber jetzt nicht.


    Als nächstes kommt das eigentliche Programm - das berüchtigte Hallo Welt... Mit ;S wird das Programm beendet und wir verlassen den Editor mit CTRL-Q.

    Das System meldet sich nun mit ok zurück. Wir kompilieren das neue Programm mit 3 LOAD und warten auf die Fertigmeldung ok. Und geben wir HALLO ein und freuen uns, dass alles geklappt hat.


    Und weil wir das Programm so schön finden, speichern wir es mit SAVE HALLO.BLK auf die Disk. Von dort können wir es jederzeit mit OPEN HALLO.BLK wieder ins RAM holen.

    Aber woran kann ich den sehen, welche Befehlsworte unser FORTH versteht? Dazu geben wir VLIST (Vocabulary List) ein.

    ... und man sieht alle definierten Befehlsworte in der umgekehrten Reihenfolge, wie sie erzeugt wurde, also unsere Worte NL und HALLO zuerst. FORTH-Befehlsworte dürfen bis zu 31 Zeichen lang sein. Das ist komfortabel.


    Nun gefällt uns unser Programm aber noch nicht ganz. Wir öffnen den Editor wieder mit E, gehen in Zeile 5 und fügen beispielsweise ein zusätzliches NL vor dem Text ein. Dazu den Einfügemodus mit CTRL-V einschalten. Dann mit CTRL-Q den Editor verlassen und mit 3 LOAD kompilieren. Aber oh weh - es gibt Fehlermeldungen:

    Fehlermeldungen in der CPM-65 Fig-FORTH Implementierung sind einfache Codes - hier beschwert sich der Compiler, dass ein schon existierendes Befehlswort nochmal definiert wurde. Das macht hier nichts - ausgeführt wird immer die neueste Version.

    Trotzdem ist das unschön und dafür gibt es auch ein FORTH-Wort, nämlich FORGET. Damit streicht man das angesprochene Wort und alle jüngeren aus dem Vokabular. Da wir NL zweimal haben müssen wir das forget NL auch zweimal eingeben. Und dann können wir HALLO neu kompilieren - diesmal ohne Fehlermeldung.


    Soweit der Einstieg in FORTH. Hingewiesen sei noch auf die Befehle DIR (Ausgabe des Disk Directory) und KILL (Löschen des Programms). Und schaut euch gerne mal SYSINFO.BLK an. Wer nun Blut geleckt hat, dem empfehle ich folgende Literatur:


    Deutsch:

    Literaturliste des FORTH-eV https://wiki.forth-ev.de/doku.php/projects:litlist

    Meine Empfehlung: Die Programmiersprache Forth von Ronald Zech, Verlag: Franzis. Leider nur noch im Antiquariat.


    Englisch:

    Starting FORTH von Leo Brodie (der Klassiker überhaupt)

    Thinking FORTH von Leo Brodie

    frei bei https://www.forth.com/forth-books/


    weitere Literatur und Programme bei https://www.forth.org/

    dort besonders Forth Dimensions https://www.forth.org/fd/FDcover.html


    Viel Erfolg

    Dietrich