Beiträge von Dietrich

    4 GB Karte mit 16 Files und 12 DIRs zugemüllt geht bei mir auch mit allen Optionen für DIR. CLS, ECHO und Pause gehen auch.



    Bei der Gelegenheit ist mir nochmal aufgefallen, dass BOOT.SYS im 1. Directory-Sektor stehen muß, sonst wird die Datei vom Bootloader nicht gefunden. Das ließe sich leicht ändern, zumindest für den 1. Block


    Weiter so Jörg


    Dietrich

    Zitat

    Ich war jetzt natürlich gespannt, ob sich durch diesen einfachen Patch meine kleine Schaar an nicht lesbaren SD-Karten auch zum Arbeiten bewegen lässt.


    Kurz: Leider nein.

    Schade. Meine SDs gehen jetzt alle. Ich habe allerdings auch nur ein kleines Sortiment - 4 GB und 8 GB von 3 Herstellern. Das Problem dürfte darin liegen, dass die SPI-Schnittstelle im Mode 3 betrieben wird. Das liegt hardwaremäßig so fest und läßt sich so ohne weiteres nicht ändern. SD -Karten erwarten aber Mode 0. Die meisten SDs tolerieren Mode 3, leider nicht alle.

    Bei Problemen also mehrere SDs verschiedener Hersteller probieren 😇


    Dietrich

    Tja, das war Ende 84 der erste Büro-PC meiner Frau. Dazu war CP/M mit Wordstar erste Wahl. Und als Drucker gabs eine Brother CE- 60 mit Eigenbau-Centronics Interface. Die konnte Matrizen bedrucken und das war seinerzeit entscheidend für eine Junglehrerin 😍

    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

    Jetzt ist mir doch etwas aufgefallen: ab und zu verliere ich die Historie der aufgerufenen Images. Bisher konnte ich kein Muster erkennen. Aber es passiert recht häufig, manchmal auch nach nur 3 Aufrufen.


    Dietrich

    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 Uwe,


    das sieht schon sehr gut aus. Bei meinem zugegeben recht speziellen CPM-65 Format für den Apple II ist noch Nacharbeit nötig....

    Die Dateigröße wird durchgehend mit 0k angegeben. Die Gesamtgröße mit 83k stimmt aber.



    Dietrich

    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

    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

    Solche Phänomene können die Folge einer hochohmigen Verbindung sein. Mögliche Ursachen: schlechter Kontakt im Adaptersockel, kalte Lötstelle, Haarriß in der Leiterbahn uä. Letzteres ist mein persönlicher Favorit.


    Viel Erfolg und vor allem Geduld beim Suchen


    Dietrich

    Wenn der Styro in dem Bild bricht (wird er früh) ist der Bildschirm umgeschützt. Die Freiräume bitte weich polstern (Stryofetzen, Kisten, Matratzenschaumstoff, Bauschaum in Tüte o.ä.), damit er auch dann grundlegend geschützt ist.

    Der Styro bricht in der Regel gar nicht, weil die Biegebeanspruchung die untergeordnete Kraft beim Fallen ist. Karton, Styro und Monitor bilden eine formstabile Einheit, an der sich erstmal wenig biegt. Die Hauptstoßkraft geht in die Kompression des Styro und da ist es unschlagbar.


    Das ist übrigends auch der Grund dafür, warum Ski- und Fahrradhelme aus Styropor sind und warum diese nach einem starken Schlag nicht mehr verwendet werden dürfen.


    Wen‘s genauer interessiert - hier ist ein gutes Erklärvideo https://youtu.be/j7nfOkjqt7Y?si=1gGCqWS9RndVwBMs


    Dietrich

    Atari SM 124

    nicht ganz, aber schon ziemlich nah,

    damit sich noch weitere beteiligen können, Auflösung dann heute Abend


    Genauso sah das damals aus. Bei Fallbeanspruchung wurde der Schaum großflächig stark und irreversibel gestaucht. Dabei wurde die Zellstruktur des Schaumes zerstört. Der Schaum durfte auch brechen, der Monitor alllerdings nicht. Diese geplante Zerstörung des Styropor frißt sehr viel Energie - so viel, dass dem Monitor nichts passiert. Ein zweites mal durfte die Kiste allerdings dann nicht nochmal fallen. Die Beanspruchungen in den Sortieranlagen, solange nichts schiefgeht, sind dagegen recht gering. Eine gute Hobbyverpackung sollte funktionieren - meistens….


    Dietrich

    Zitat
    Wie hat man nur die ganzen TV's und CRT's damals transportiert? :D

    Die ‚modernen‘ Röhren-TVs wurden immer in Styropor-Formverpackungen versandt, und zwar weltweit. Das Gesamtsystem musste einen - genau einen - Fall aus beträchtlicher Höhe schadlos überstehen können. Wenn ich mich recht erinnere waren es 2 m Fallhöhe. Das funktioniert, weil Styropor unter Selbstaufopferung enorm viel Enegie aufnehmen kann, ähnlich wie eine Knautschzone im PKW. Diese Styroporteile sind ingenieurmäßig durchkonstruiert und maschinell gefertigt. Keine Chance, dieses Schutzniveu mit einer hausgemachten Lösung zu erzielen.


    Und übrigends - in Fernsehergehäusen war nie Weichmacher. Die waren seit den 60er Jahren aus schlagzähem Polystyrol. Und schlagzäh hieß nie, dass man den Fernseher runterwerfen durfte …


    Dietrich

    Ich würde den Akku ausbauen und mit 0,1C, das wären hier 40 mA unter Aufsicht laden. Die Klemmenspannung muß dann zunächst in ein Plateau laufen, das von der Akkuchemie abhängt. Wenn die klar ist, dann mit einem Computergesteuerten Akkulader fertigladen.


    Alternativ den Akku entsorgen und durch ein bekanntes Modell ersetzen.


    Dietrich

    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

    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


    Eine SD-Karte kann ein einmal gewähltes Protokoll nicht ändern, außer sie wird von der Stromversorgung getrennt:

    Zitat

    There are two bus protocols defined for SD Cards. The default mode is native SD mode but the cardcan be configured to use a slower SPI mode. Protocol selection is done during the first reset commandafter power up. The SD Card powers up in SD mode. To switch the card to SPI mode, the CS signal

    must be asserted while the host issues a reset command to the card. Once a particular protocol is

    configured, it cannot be changed while power is applied. The only way to switch between protocol

    modes is to do a power cycle.

    Quelle: https://www.cactus-tech.com/wp…-To-SD-Card-Interface.pdf

    In meinem Setup kann ich meine SD-Karten problemlos mehrfach initialisieren auch ohne die Stromversorgung zu trennen.

    2ee: sehr mysteriös. Sieht ein bißchen aus wie ein brownout. Checke doch mal die Versorgungsspannung auf Einbrüche...


    PS. Bei mir sind DAT1 und DAT2 offen


    Dietrich

    Auch einer LiFePo ist das Laden oberhalb der Ladeschlussspannung nicht egal. Auch hier leidet die Lebensdauer. Dazu gibt es umfangreiche Literatur der Hersteller.


    Dietrich

    Standard CR2032 sind aber nicht ladbar... und daher nicht geeignet um diese an die Ladeschaltung anzuschliessen, Gefahr der Explosion...

    wenn dann müssen das LIR2032 sein und die haben 3,6V

    Liion an einer Strombegrenzung laden? Ohne dass die Spannung fest auf <4,2V halte ich das für gefährlich.

    Wenn die aus 5V gespeist wird gibt es Liion-Ladeschaltungen zum Centpreis (Ladestrom-Widerstand tauschen), notfalls 2x 1N4148 (oder 1V Zenerdiode) und mit 3,8V Ladeschlussspannung leben.

    Die 1N4148 hat bei 0,2 mA nur noch 0,5V Spannungsabfall. 2 Dioden müssen es für 5V schon sein


    Dietrich

    Die LIR2032 ist eine ganz gewöhnliche Lithium-Ionenzelle. Die Ladeschlußspannung ist 4,2 V und ist von der Ladeschaltung strikt zu begrenzen, sonst lebt die Zelle nicht lange. NiXX Ladeschaltungen sind völlig ungeeignet und zerstören diese Zelle. Platzen wird sie wohl nicht - dazu sind die Ströme zu gering und der Aufbau zu robust. Aber Strom liefert sie dann nicht mehr …


    Dietrich

    NiCd haben eine Ladeschlussspannung von knapp 1,5V, 2 davon also 3V. Frische 2032 haben 3,3V, das geht also. Der Spannungsabfall an der Diode ist bei den winzigen Strömen auch sehr gering - macht aber nix.


    Im Prinzip kann man NiCd gut durch NiMH ersetzen. Die Ladeschaltungen aus der NiCd-Zeit sind allerdings oft recht primitiv, z.B. ein einfacher Widerstand zur Strombegrenzung. Das halten viele NiMH nicht lange aus. Es gibt aber von Panasonic NiMHs für schnurlose Telefone, die diese Dauerstromladung aushalten.


    Dietrich

    Das Wasser hat chemisch abreagiert und die Polymere des Binders gespalten. Durch Erwärmen kannst du noch bewirken, dass die Bruchstücke etwas zusammmensintern und die Magnetpigmente noch etwas festkleben. Das ist aber nicht abriebfest. Wie oft man die so geschädigte Magnetschicht noch lesen kann, ist nicht vorhersehbar.

    Dietrich