CP1 Programme laden Speichern - Atmel
Moderator: suntri
CP1 Programme laden Speichern - Atmel
Hallo CP1 Fan´s
Jeder CP1 Besitzer kennt es warscheinlich. Das Speichern / Laden mit Casseten - Interface.
Ich hab da mal ein kleines Programchen für meinen CP1 Nachbau geschrieben.
Jetzt kann der auch die Daten am Orginal CP1 Port lesen und schreiben.
Wenn einer Interesse hat, würd ich mehr zu diesen Thema schreiben.
Das Bild zeigt meinen Nachbau und einen Umgebauten Orginal CP1.
Da ist mir leider die Orginal Flachtastatur defekt gegangen.
Tschau Matze
Jeder CP1 Besitzer kennt es warscheinlich. Das Speichern / Laden mit Casseten - Interface.
Ich hab da mal ein kleines Programchen für meinen CP1 Nachbau geschrieben.
Jetzt kann der auch die Daten am Orginal CP1 Port lesen und schreiben.
Wenn einer Interesse hat, würd ich mehr zu diesen Thema schreiben.
Das Bild zeigt meinen Nachbau und einen Umgebauten Orginal CP1.
Da ist mir leider die Orginal Flachtastatur defekt gegangen.
Tschau Matze
- Dateianhänge
-
- IMG_6597.JPG (241.71 KiB) 14588 mal betrachtet
- IMG_6597.JPG (241.71 KiB) 14588 mal betrachtet
- JeanLuc7
- Fast schon Admin
- Beiträge: 675
- Registriert: 09.02.2011, 16:07
- Wohnort: Berlin
- Kontaktdaten:
Re: CP1 Programme laden Speichern - Atmel
Hallo Matze,
ich würde gerne mehr über dein System und zu dem Thema lesen. Ich finde diese Retro-Nachbauten ja sowieso klasse.
Viele Grüße
Frank
ich würde gerne mehr über dein System und zu dem Thema lesen. Ich finde diese Retro-Nachbauten ja sowieso klasse.
Viele Grüße
Frank
Re: CP1 Programme laden Speichern - Atmel
Hallo Matze,
auch ich fände es interessant mehr über Deinen Nachbau des CP1 zu erfahren. Ich hab auch noch einen originalen zuhause, allerdings ohne Cassetteninterface, war damals zu teuer. Ha also meine Programme immer wieder neu eingegeben :-)
Gruß Ingo
auch ich fände es interessant mehr über Deinen Nachbau des CP1 zu erfahren. Ich hab auch noch einen originalen zuhause, allerdings ohne Cassetteninterface, war damals zu teuer. Ha also meine Programme immer wieder neu eingegeben :-)
Gruß Ingo
Re: CP1 Programme laden Speichern - Atmel
Hallo
Eigentlich wollte ich für die Orginal CP1 Besitzer, ein kleineres Platinchen mit Atiny 2313 und einen 24c08 basteln.
Mal schaun wer sich dafür Interesiert. Bevor ich etwas bastel , was keiner haben will. Die zwei Bauteile mit
drumherum würden ja auch billiger sein wie mein Nachbau.
Tschau erstmal Matze
Eigentlich wollte ich für die Orginal CP1 Besitzer, ein kleineres Platinchen mit Atiny 2313 und einen 24c08 basteln.
Mal schaun wer sich dafür Interesiert. Bevor ich etwas bastel , was keiner haben will. Die zwei Bauteile mit
drumherum würden ja auch billiger sein wie mein Nachbau.
Tschau erstmal Matze
-
- Ist öfters hier
- Beiträge: 31
- Registriert: 02.11.2009, 12:03
- Wohnort: Heilbronn
Re: CP1 Programme laden Speichern - Atmel
Hallo Matze,matze69 hat geschrieben:Hallo
Eigentlich wollte ich für die Orginal CP1 Besitzer, ein kleineres Platinchen mit Atiny 2313 und einen 24c08 basteln.
Mal schaun wer sich dafür Interesiert. Bevor ich etwas bastel , was keiner haben will. Die zwei Bauteile mit
drumherum würden ja auch billiger sein wie mein Nachbau.
Tschau erstmal Matze
da ich vor einiger Zeit mal die gleiche Idee hatte, aber nie weiter verfolgt habe, hätte ich da Interesse dran.
tiny2313 und 24cirgendwas liegt hier noch als DIL in der Kruschtelkiste. ...
Viele Grüße
Ralf
Re: CP1 Programme laden Speichern - Atmel
Hallo Leute
Kleine Ankündigung. An den Speichermodul Cp1 - Atmel wird immer noch gearbeitet. Der Rohaufbau steht.
Jetzt nur noch Schaltplan zeichnen. Platinen- Layout entwirft Horst B.
Für die ganz Eiligen unter euch kann ich das schicken was ich schon habe ( Programm , Skitze )
Wie man sehen kann hab ich eine Atmega8 genommen. Ein LCD Display kann man auch anschliessen, ist aber nicht
zwingend notwendig. Man kann eben nur vorher sehen was auf den 28C08 ist.
Bei Interesse Mail hier oder ma.ro69@web.de
Tschau Matze
Kleine Ankündigung. An den Speichermodul Cp1 - Atmel wird immer noch gearbeitet. Der Rohaufbau steht.
Jetzt nur noch Schaltplan zeichnen. Platinen- Layout entwirft Horst B.
Für die ganz Eiligen unter euch kann ich das schicken was ich schon habe ( Programm , Skitze )
Wie man sehen kann hab ich eine Atmega8 genommen. Ein LCD Display kann man auch anschliessen, ist aber nicht
zwingend notwendig. Man kann eben nur vorher sehen was auf den 28C08 ist.
Bei Interesse Mail hier oder ma.ro69@web.de
Tschau Matze
- Dateianhänge
-
- bild7.JPG (72.36 KiB) 13790 mal betrachtet
- bild7.JPG (72.36 KiB) 13790 mal betrachtet
- lambdamikel
- Stammgast
- Beiträge: 150
- Registriert: 15.01.2016, 09:33
- Wohnort: Palo Alto, CA, USA, Ex-Hamburg
- Kontaktdaten:
Re: CP1 Programme laden Speichern - Atmel
Ah, tolles Projekt!
Ich habe hier in den USA auch einen CP1 (mein CP2 ist noch in Hamburg...)
Wäre sehr an der Platine interessiert. Eventuell könnte man sowas ja auch
für den Busch Microtronic machen? Und das 2095-Interface "emulieren".
Ich habe zwar ein 2095 sowohl hier als auch in Hamburg (und zum Spielen
nehme ich oft den Emulator), aber die Möglichkeit, Programme von SDCard
in das "echte" Microtronic zu laden, wäre schon toll.
Viele Grüße
Michael
Ich habe hier in den USA auch einen CP1 (mein CP2 ist noch in Hamburg...)
Wäre sehr an der Platine interessiert. Eventuell könnte man sowas ja auch
für den Busch Microtronic machen? Und das 2095-Interface "emulieren".
Ich habe zwar ein 2095 sowohl hier als auch in Hamburg (und zum Spielen
nehme ich oft den Emulator), aber die Möglichkeit, Programme von SDCard
in das "echte" Microtronic zu laden, wäre schon toll.
Viele Grüße
Michael
Re: CP1 Programme laden Speichern - Atmel
Hallo
Zum Thema Busch Microtronic : Leider besitze ich solch ein System nicht. Deswegen kann ich euch da recht wenig weiterhelfen.
Ich kann euch nur den Tipp geben, irgendwo werden die Daten ja rausgeschaukelt. Beim Kosmos Computer ist es ein ungewöhnliches
Aufzeichnungsverfahren. Sollte warscheinlich billig sein. Wenn sie ein normales Standartsystem genommen haben, so würd ich mal nen
MAX 232 dawischenhängen . Mit Windos Hyperterminal versuchen Daten zu empfangen. So schnell waren die damals nicht. 300 / 600 Baud.
Ihr müst halt mal schaun. Den RS232/TTl Wandler bekommt man z.B. bei Pollin, für billiges Geld, als Bausatz.
Viel Spass beim basteln
Matthias
Zum Thema Busch Microtronic : Leider besitze ich solch ein System nicht. Deswegen kann ich euch da recht wenig weiterhelfen.
Ich kann euch nur den Tipp geben, irgendwo werden die Daten ja rausgeschaukelt. Beim Kosmos Computer ist es ein ungewöhnliches
Aufzeichnungsverfahren. Sollte warscheinlich billig sein. Wenn sie ein normales Standartsystem genommen haben, so würd ich mal nen
MAX 232 dawischenhängen . Mit Windos Hyperterminal versuchen Daten zu empfangen. So schnell waren die damals nicht. 300 / 600 Baud.
Ihr müst halt mal schaun. Den RS232/TTl Wandler bekommt man z.B. bei Pollin, für billiges Geld, als Bausatz.
Viel Spass beim basteln
Matthias
Re: CP1 Programme laden Speichern - Atmel
Hallo,
das Layout hätte ich schon längst entworfen, aber den 24C08 bekommt man nicht mehr.
Habe schon bei einigen Händlern nachgefragt.
Gruß
-Horst
das Layout hätte ich schon längst entworfen, aber den 24C08 bekommt man nicht mehr.
Habe schon bei einigen Händlern nachgefragt.
Gruß
-Horst
- Bambini
- Stammgast
- Beiträge: 116
- Registriert: 19.02.2013, 16:44
- Wohnort: Confoederatio Helvetica
- Kontaktdaten:
Re: CP1 Programme laden Speichern - Atmel
Hallo!
Habe noch einen CP1 zum Ausschlachten, Tastatur funktioniert teilweise nicht mehr
Habe noch einen CP1 zum Ausschlachten, Tastatur funktioniert teilweise nicht mehr
Gruss Beat
Re: CP1 Programme laden Speichern - Atmel
Hallo,
möchtest Du dein Gerät verkaufen oder reparieren ?
Bei einem Verkauf, wäre ich an dem Gerät interessiert.
Gruß
-Horst
möchtest Du dein Gerät verkaufen oder reparieren ?
Bei einem Verkauf, wäre ich an dem Gerät interessiert.
Gruß
-Horst
- lambdamikel
- Stammgast
- Beiträge: 150
- Registriert: 15.01.2016, 09:33
- Wohnort: Palo Alto, CA, USA, Ex-Hamburg
- Kontaktdaten:
Re: CP1 Programme laden Speichern - Atmel
Im April 2016 schrieb ich:
https://github.com/martinsauter/Busch- ... m-tape.py
und er dafür das Protokoll zwischen 2090 und 2095 aufgeschlüsselt / "reengineered" hat, war es relativ einfach, dieses Projekt wirklich einmal zu realisieren:
https://www.youtube.com/watch?v=_KTuKygo-tQ
Github:
https://github.com/lambdamikel/microtro ... o-emulator
Gruß,
Michael
Nun, da Martin Sauter den Raspberry Pi basierten 2095 Tape Emulator erschaffen hatAh, tolles Projekt!
Ich habe hier in den USA auch einen CP1 (mein CP2 ist noch in Hamburg...)
Wäre sehr an der Platine interessiert. Eventuell könnte man sowas ja auch
für den Busch Microtronic machen? Und das 2095-Interface "emulieren".
Ich habe zwar ein 2095 sowohl hier als auch in Hamburg (und zum Spielen
nehme ich oft den Emulator), aber die Möglichkeit, Programme von SDCard
in das "echte" Microtronic zu laden, wäre schon toll.
Viele Grüße
Michael
https://github.com/martinsauter/Busch- ... m-tape.py
und er dafür das Protokoll zwischen 2090 und 2095 aufgeschlüsselt / "reengineered" hat, war es relativ einfach, dieses Projekt wirklich einmal zu realisieren:
https://www.youtube.com/watch?v=_KTuKygo-tQ
Github:
https://github.com/lambdamikel/microtro ... o-emulator
Gruß,
Michael
Re: CP1 Programme laden Speichern - Atmel
Hallo, sorry für das Reaktivieren dieses alten Threads, aber ich glaube, hier passt meine Frage ganz gut hin.
Ich bin seit einigen Tagen stolzer Besitzer eines noch funktionierenden original CP1 (nachdem ich mir ca. 35 Jahre lang einen gewünscht habe ). Nachdem ich ein wenig damit herumprogrammiert habe (ich bin Informatiker und habe Maschinensprache in meiner Kindheit auf dem statt des CP1 auf dem Gabentisch gefundenen Commodore-Heimcomputer gelernt), dachte ich, ich nehme mal einen Arduino aus der Schublade und bastele einen Cassetten-Emulator.
Beim Reverse-Engineeren der Datenkodierung zur Übertragung ist mir folgendes aufgefallen: Sowohl auf Matzes Foto als auch in der offiziellen Anleitung sieht es so aus, als würde ein 1-Bit als kurzes High-Signal, gefolgt von einem doppelt so langen Low-Signal kodiert, und ein 0-Bit umgekehrt als ein langes High-Signal, gefolgt von einem kurzen Low-Signal.
Beim "Abhören" dessen, was der CP1 auf Klemme 8 des Port 1 beim Speichern sendet, ist es aber bei mir in der Realität genau umgekehrt, was High- und Low-Signal betrifft. Ein 1-Bit wird also kodiert als kurzes Low-Signal, gefolgt von einem langen High-Signal und ein 0-Bit als langes Low-Signal, gefolgt von einem kurzen High-Signal. Die Grenze zwischen zwei Bits stellt also jeweils nicht die ansteigende sondern die abfallende Flanke dar.
Das ist auch irgendwie sinnvoller, da die Übertragung ja mit einem 16-sekündigen (High-) Kontrollsignal beginnt, und man zur Abgrenzung vom ersten zu übertragenden Bit dann eine abfallende Flanke dazwischenschieben müsste, wenn es so wäre wie in der Anleitung beschrieben.
Wenn ich die Signale also so interpretiere wie von mir beschrieben und nicht wie im Handbuch, bekomme ich das, was ich auch in den CP1 eingegeben habe (komischerweise ist das erste Byte der Opcode an Adresse 000, aber ab dann geht es rückwärts: Byte 2 ist der Operand von Adresse 127, Byte 3 der Opcode von Adresse 127 und so rückwärts weiter bis zum Operanden an Adresse 000).
Nun zu meiner eigentlichen Frage:
Wenn ich genau das, was ich beim Speichern erhalten habe, zum Laden an den CP1 sende (16 Sekunden High als Kontrollsignal und dann die 2048 Bits, kodiert wie oben beschrieben), nimmt der CP1 sie nicht an. Sobald der Arduino das Kontrollsignal sendet, drücke ich "CAL" auf dem CP1, der nach oben offene "Eimer" erscheint, aber nach Ende der Übertragung kehrt der CP1 nicht aus dem Lade-Modus zurück.
In der Anleitung ist die Rede davon, dass Klemme 7 als Steuerleitung verwendet wird, aber so wie ich das verstehe steuert der CP1 das Kassetten-Interface und nicht umgekehrt. Oder muss ich zum Laden Klemme 7 von außen auf High setzen?
Was mir auch aufgefallen ist: Auf Matzes Zeichnung stehen an den High- und Low-Signalen jeweils die Zahlen 130 und 65, und ich nehme an, dass das Millisekunden sein sollen. Bei meinem CP1 sind die Zeiten beim Speichern aber genau halb so lang: 65ms für die langen Teile und 32,5ms für die kurzen.
Gab es vielleicht verschiedene Versionen des CP1, und hat sich das Übertragungsprotokoll mit den Versionen geändert?
Aber brennender die Frage: Warum reagiert mein CP1 beim Laden nicht, wenn ich ihm genau das sende, was er mir vorher gesendet hat?
Für Interessierte: Der Arduino-Code ist bei GitHub. Er ist im jetzigen Zustand noch als Alpha-Version zu bezeichnen. Was noch fehlt, ist die Möglichkeit, mehrere Programme (Speicherinhalte) zu speichern. Zur Zeit geht nur einer, und der wird im Arduino-EEPROM ab Adresse 0 abgelegt.
Sorry für den langen Text!
Ich bin seit einigen Tagen stolzer Besitzer eines noch funktionierenden original CP1 (nachdem ich mir ca. 35 Jahre lang einen gewünscht habe ). Nachdem ich ein wenig damit herumprogrammiert habe (ich bin Informatiker und habe Maschinensprache in meiner Kindheit auf dem statt des CP1 auf dem Gabentisch gefundenen Commodore-Heimcomputer gelernt), dachte ich, ich nehme mal einen Arduino aus der Schublade und bastele einen Cassetten-Emulator.
Beim Reverse-Engineeren der Datenkodierung zur Übertragung ist mir folgendes aufgefallen: Sowohl auf Matzes Foto als auch in der offiziellen Anleitung sieht es so aus, als würde ein 1-Bit als kurzes High-Signal, gefolgt von einem doppelt so langen Low-Signal kodiert, und ein 0-Bit umgekehrt als ein langes High-Signal, gefolgt von einem kurzen Low-Signal.
Beim "Abhören" dessen, was der CP1 auf Klemme 8 des Port 1 beim Speichern sendet, ist es aber bei mir in der Realität genau umgekehrt, was High- und Low-Signal betrifft. Ein 1-Bit wird also kodiert als kurzes Low-Signal, gefolgt von einem langen High-Signal und ein 0-Bit als langes Low-Signal, gefolgt von einem kurzen High-Signal. Die Grenze zwischen zwei Bits stellt also jeweils nicht die ansteigende sondern die abfallende Flanke dar.
Das ist auch irgendwie sinnvoller, da die Übertragung ja mit einem 16-sekündigen (High-) Kontrollsignal beginnt, und man zur Abgrenzung vom ersten zu übertragenden Bit dann eine abfallende Flanke dazwischenschieben müsste, wenn es so wäre wie in der Anleitung beschrieben.
Wenn ich die Signale also so interpretiere wie von mir beschrieben und nicht wie im Handbuch, bekomme ich das, was ich auch in den CP1 eingegeben habe (komischerweise ist das erste Byte der Opcode an Adresse 000, aber ab dann geht es rückwärts: Byte 2 ist der Operand von Adresse 127, Byte 3 der Opcode von Adresse 127 und so rückwärts weiter bis zum Operanden an Adresse 000).
Nun zu meiner eigentlichen Frage:
Wenn ich genau das, was ich beim Speichern erhalten habe, zum Laden an den CP1 sende (16 Sekunden High als Kontrollsignal und dann die 2048 Bits, kodiert wie oben beschrieben), nimmt der CP1 sie nicht an. Sobald der Arduino das Kontrollsignal sendet, drücke ich "CAL" auf dem CP1, der nach oben offene "Eimer" erscheint, aber nach Ende der Übertragung kehrt der CP1 nicht aus dem Lade-Modus zurück.
In der Anleitung ist die Rede davon, dass Klemme 7 als Steuerleitung verwendet wird, aber so wie ich das verstehe steuert der CP1 das Kassetten-Interface und nicht umgekehrt. Oder muss ich zum Laden Klemme 7 von außen auf High setzen?
Was mir auch aufgefallen ist: Auf Matzes Zeichnung stehen an den High- und Low-Signalen jeweils die Zahlen 130 und 65, und ich nehme an, dass das Millisekunden sein sollen. Bei meinem CP1 sind die Zeiten beim Speichern aber genau halb so lang: 65ms für die langen Teile und 32,5ms für die kurzen.
Gab es vielleicht verschiedene Versionen des CP1, und hat sich das Übertragungsprotokoll mit den Versionen geändert?
Aber brennender die Frage: Warum reagiert mein CP1 beim Laden nicht, wenn ich ihm genau das sende, was er mir vorher gesendet hat?
Für Interessierte: Der Arduino-Code ist bei GitHub. Er ist im jetzigen Zustand noch als Alpha-Version zu bezeichnen. Was noch fehlt, ist die Möglichkeit, mehrere Programme (Speicherinhalte) zu speichern. Zur Zeit geht nur einer, und der wird im Arduino-EEPROM ab Adresse 0 abgelegt.
Sorry für den langen Text!
Re: CP1 Programme laden Speichern - Atmel
Das eigentliche Problem hat sich nach einmal drüber Schlafen gelöst: Ich hatte schlicht vergessen, den Pin Mode des Arduino vor dem Laden auf OUTPUT zu setzen Jetzt funktioniert auch das Laden.
Trotzdem würde es mich interessieren, ob bei Euren CP1 die Signale wie im Handbuch beschrieben aussehen oder ob sie auch umgedreht sind.
Danke und viele Grüße,
Ralph
Trotzdem würde es mich interessieren, ob bei Euren CP1 die Signale wie im Handbuch beschrieben aussehen oder ob sie auch umgedreht sind.
Danke und viele Grüße,
Ralph
Re: CP1 Programme laden Speichern - Atmel
Hallo Ralph
Die Signale sind wie in der Beschreibung. Ich habe nur noch einen Transistor davor geschaltet, weil mein
Atmega den Signalpegel schlecht lesen konnte. Deswegen die Negierung.
Mit den 32 und 65 ms wirst du schon richtig liegen. Ich hatte, als ich das Programm geschrieben habe kein Speicheroszilloskop.
Mit einen kleinen Programm hab ich nur einen Zähler Progamiert, der mir dann die Low und Highzeiten angezeigt hat. Deswegen
bei mir die anderen Werte.
Matze
Die Signale sind wie in der Beschreibung. Ich habe nur noch einen Transistor davor geschaltet, weil mein
Atmega den Signalpegel schlecht lesen konnte. Deswegen die Negierung.
Mit den 32 und 65 ms wirst du schon richtig liegen. Ich hatte, als ich das Programm geschrieben habe kein Speicheroszilloskop.
Mit einen kleinen Programm hab ich nur einen Zähler Progamiert, der mir dann die Low und Highzeiten angezeigt hat. Deswegen
bei mir die anderen Werte.
Matze
Re: CP1 Programme laden Speichern - Atmel
Hallo miteinander,
dieser Thread ist schon was älter, aber vielleicht ist es ja für irgendjemand hilfreich:
Ich habe für den CP1 eine kleine Toolchain entwickelt, so dass man auf einem Raspberry Pi bequem in der Kosmos-Assemblersprache programmieren kann, ohne sich um Zeilennummern kümmern zu müssen usw.
Außerdem kann man damit natürlich den Speicherinhalt des CP1 auslesen und zurückschreiben.
Alles unter: https://github.com/moosy/kosmos-cp1-toolchain
Beispielcode:
Eingegeben wird:
Der Assembler macht draus:
Mit der Option -s kann das Ganze dann auch gleich in den CP1 geschrieben werden.
Zum Anschluss an den Raspi braucht's nur einen 1kOhm Widerstand und eine 3,3V Zenerdiode:
Also, wer noch einen Kosmos CP1 rumliegen hat und Zugriff auf einen Raspberry Pi hat, der sollte sich das mal ansehen!
LG
Moosy
dieser Thread ist schon was älter, aber vielleicht ist es ja für irgendjemand hilfreich:
Ich habe für den CP1 eine kleine Toolchain entwickelt, so dass man auf einem Raspberry Pi bequem in der Kosmos-Assemblersprache programmieren kann, ohne sich um Zeilennummern kümmern zu müssen usw.
Außerdem kann man damit natürlich den Speicherinhalt des CP1 auslesen und zurückschreiben.
Alles unter: https://github.com/moosy/kosmos-cp1-toolchain
Beispielcode:
Eingegeben wird:
Code: Alles auswählen
AKO 0
>loop:
ANZ
VZG 250
ADD one
SPU loop
>one:
# 1
Code: Alles auswählen
user@machine:# kosmos_asm.php example.koa -c -d
AKO 000 | 000: 04.000 | Konstante 000 in den Akku laden
>loop:
ANZ | 001: 02.000 | Akku-Inhalt anzeigen
VZG 250 | 002: 03.250 | Verzögern um 250 ms
ADD one | 003: 07.005 | Zum Akku Inhalt von Zelle 005 (one) addieren
SPU loop | 004: 09.001 | Springe zu Adresse 001 (loop)
>one:
# 001 | 005: 00.001 | Datenwert 001
Zum Anschluss an den Raspi braucht's nur einen 1kOhm Widerstand und eine 3,3V Zenerdiode:
Code: Alles auswählen
GPIO: --------o-----[1 kOhm]------ Port 1/8
|
-----,
^ Zener diode 3,3 V
/ \
-----
|
GND: --------o-------------------- GND
LG
Moosy