CP1 Programme laden Speichern - Atmel

Moderator: suntri

Antworten
matze69
Ist öfters hier
Ist öfters hier
Beiträge: 25
Registriert: 08.12.2012, 20:46

CP1 Programme laden Speichern - Atmel

Beitrag von matze69 »

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
Dateianhänge
IMG_6597.JPG
IMG_6597.JPG (241.71 KiB) 14574 mal betrachtet
IMG_6597.JPG
IMG_6597.JPG (241.71 KiB) 14574 mal betrachtet
Benutzeravatar
JeanLuc7
Fast schon Admin
Fast schon Admin
Beiträge: 675
Registriert: 09.02.2011, 16:07
Wohnort: Berlin
Kontaktdaten:

Re: CP1 Programme laden Speichern - Atmel

Beitrag von JeanLuc7 »

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
Burnout
Ganz neu hier
Ganz neu hier
Beiträge: 4
Registriert: 12.11.2008, 09:57

Re: CP1 Programme laden Speichern - Atmel

Beitrag von Burnout »

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
matze69
Ist öfters hier
Ist öfters hier
Beiträge: 25
Registriert: 08.12.2012, 20:46

Re: CP1 Programme laden Speichern - Atmel

Beitrag von matze69 »

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
RalfGeiger
Ist öfters hier
Ist öfters hier
Beiträge: 31
Registriert: 02.11.2009, 12:03
Wohnort: Heilbronn

Re: CP1 Programme laden Speichern - Atmel

Beitrag von RalfGeiger »

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
Hallo 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
matze69
Ist öfters hier
Ist öfters hier
Beiträge: 25
Registriert: 08.12.2012, 20:46

Re: CP1 Programme laden Speichern - Atmel

Beitrag von matze69 »

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
Dateianhänge
bild7.JPG
bild7.JPG (72.36 KiB) 13776 mal betrachtet
bild7.JPG
bild7.JPG (72.36 KiB) 13776 mal betrachtet
Benutzeravatar
lambdamikel
Stammgast
Stammgast
Beiträge: 150
Registriert: 15.01.2016, 09:33
Wohnort: Palo Alto, CA, USA, Ex-Hamburg
Kontaktdaten:

Re: CP1 Programme laden Speichern - Atmel

Beitrag von lambdamikel »

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
matze69
Ist öfters hier
Ist öfters hier
Beiträge: 25
Registriert: 08.12.2012, 20:46

Re: CP1 Programme laden Speichern - Atmel

Beitrag von matze69 »

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
HGB100
Ganz neu hier
Ganz neu hier
Beiträge: 2
Registriert: 25.01.2017, 15:28

Re: CP1 Programme laden Speichern - Atmel

Beitrag von HGB100 »

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
Benutzeravatar
Bambini
Stammgast
Stammgast
Beiträge: 116
Registriert: 19.02.2013, 16:44
Wohnort: Confoederatio Helvetica
Kontaktdaten:

Re: CP1 Programme laden Speichern - Atmel

Beitrag von Bambini »

Hallo!
Habe noch einen CP1 zum Ausschlachten, Tastatur funktioniert teilweise nicht mehr :cry:
Gruss Beat
HGB100
Ganz neu hier
Ganz neu hier
Beiträge: 2
Registriert: 25.01.2017, 15:28

Re: CP1 Programme laden Speichern - Atmel

Beitrag von HGB100 »

Hallo,

möchtest Du dein Gerät verkaufen oder reparieren ?
Bei einem Verkauf, wäre ich an dem Gerät interessiert.

Gruß
-Horst
Benutzeravatar
lambdamikel
Stammgast
Stammgast
Beiträge: 150
Registriert: 15.01.2016, 09:33
Wohnort: Palo Alto, CA, USA, Ex-Hamburg
Kontaktdaten:

Re: CP1 Programme laden Speichern - Atmel

Beitrag von lambdamikel »

Im April 2016 schrieb ich:
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
Nun, da Martin Sauter den Raspberry Pi basierten 2095 Tape Emulator erschaffen hat
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
RalphBln
Ganz neu hier
Ganz neu hier
Beiträge: 2
Registriert: 08.01.2019, 01:52

Re: CP1 Programme laden Speichern - Atmel

Beitrag von RalphBln »

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 :lol:). 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!
RalphBln
Ganz neu hier
Ganz neu hier
Beiträge: 2
Registriert: 08.01.2019, 01:52

Re: CP1 Programme laden Speichern - Atmel

Beitrag von RalphBln »

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 :oops: 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
matze69
Ist öfters hier
Ist öfters hier
Beiträge: 25
Registriert: 08.12.2012, 20:46

Re: CP1 Programme laden Speichern - Atmel

Beitrag von matze69 »

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
moosy0
Ganz neu hier
Ganz neu hier
Beiträge: 1
Registriert: 02.07.2021, 22:08

Re: CP1 Programme laden Speichern - Atmel

Beitrag von moosy0 »

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:

Code: Alles auswählen

AKO 0
>loop:
ANZ
VZG 250
ADD one
SPU loop

>one:
# 1
Der Assembler macht draus:

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
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:

Code: Alles auswählen

GPIO: --------o-----[1 kOhm]------ Port 1/8
              |
            -----,
              ^     Zener diode 3,3 V
             / \
            -----
              |
GND:  --------o-------------------- GND 
Also, wer noch einen Kosmos CP1 rumliegen hat und Zugriff auf einen Raspberry Pi hat, der sollte sich das mal ansehen!

LG
Moosy
Antworten

Zurück zu „CP1“