Hallo, zusammen! Ich überlege, wie man den mittlerweile superalten Lerncomputer "KOSMOS CP1" nachbauen kann. https://de.wikipedia.org/wiki/Kosmos_CP1 http://www.8bit-homecomputermuseum.at/computer/kosmos_computer_praxis_cp1.html Dieser Lerncomputer hat einen Intel 8049 drin gehabt, mit 2kByte OTP-ROM und 128 Byte RAM. Der Computer wird in einer vereinfachten Pseudo-Maschinensprache programmiert, die mittels des Interpreters im ROM des verbauten Microprozessors ausgeführt wird. Die Programmierung erfolgt durch die Eingabe der numerischen, zweistelligen Befehle, gefolgt von dreistelligen Operanden. Insgesamt stehen 21 Befehle zur Verfügung. Alle Zahlen (Befehle, Operanden, Daten, Adressen) werden im Dezimalsystem dargestellt. Dieses Gerät funktioniert völlig autark, benötigt also nichts weiter außer dem Netzteil. Interessanterweise habe ich auch noch einen Schaltplan im Netz gefunden, und man sieht, dass der Hersteller die I/O-Leitungen für die Tasten und die LEDs von den Sieben-Segment-Anzeigen gemultiplext hat. Insgesamt brauchten sie nur 17 Leitungen. Naja, da dachte ich mir, könnte man eine richtige Platine machen. Der Controller kann ein kleiner sein, im sog. 28/SPDIP-Gehäuse. Für die Tasten gibt es auch schöne in verschiedenen Farben. (Anstatt der LED-Anzeige, oder als zusätzliche Option, könnte ich mir auch ein 1x8-Zeichen LCD-Display vorstellen.) Oder alphanumerische LED-Anzeigen und für jeden Befehl eine eigene Taste. Es gab schon einige Nachbauprojekte für einfach nutzbare Computer. Aber auch schon mal so einen minimalistischen? Falls jemand so ein Projekt kennt...
Beim Computer ist die Hardware das eine, genau so wichtig ist die Software. Ein Programm von ca. 2 kByte Assembler zu erstellen ist schon sportlich und benötigt deutlich mehr Zeit als das anfertigen der Hardware.
Nautilus schrieb: > Beim Computer ist die Hardware das eine, genau so wichtig ist die > Software. > Ein Programm von ca. 2 kByte Assembler zu erstellen ist schon sportlich > und benötigt deutlich mehr Zeit als das anfertigen der Hardware. Und wofür muss man den Interpreter in Assembler bauen? Abgesehen davon, warum die Beschränkung auf 2kB?
Nautilus schrieb: > Ein Programm von ca. 2 kByte Assembler zu erstellen ist schon sportlich > und benötigt deutlich mehr Zeit als das anfertigen der Hardware. LöL. Ich erinnere mal freundlich daran das das die doppelte Speicherkapazität des Computer ist, auf den ich Coden gelernt habe. ;) Ein ZX-81 nämlich. ;)
Du kannst den CP1 nachbauen, wie er mal war. Dann musst du nur einen 8749 Prozessor kaufen und programmieren. Der Code dafür ist im Netz zu finden. Alternativ nimmst du einen 8039, vorzugsweise in CMOS, also 80C39 und häkelst mit einen HC573 Latch ein Eprom dran. Da die 2716 schlecht zu bekommen sind, solltest du was größeres nehmen und hast dann eben Platz verschenkt. Der 8155 dürfte ein Problem werden. Der wird mit Gold aufgewogen. Bleibt als Ausweg eine andere CPU, ATMega328 als Beispiel. Da hast du ROM und RAM im Überfluss. Musst du nur den Code des CP1 disassemblieren, verstehen und auf ATMega umschreiben. Das ist keine Raketenwissenschaft, reine Geduldsarbeit. Viel Spass dabei.
Ja, das Original hatte 2kByte OTP-ROM. Heutzutage kann man natürlich auch 4/8/16 kByte Flash nehmen. Und ein bisschen mehr RAM gibt's auch. :-) Im RAM soll das sog. Anwenderprogramm auch Platz finden; oder im Flash abgelegt werden. Man kann davon ausgehen, dass keine riesigen Programme geschrieben werden, es ist ja ein Lerncomputer.
Der müde Joe schrieb: > das Original hatte 2kByte OTP-ROM Wieder was gelernt. Wie ist die Typbezeichnung für einen 8049 als OTP? Wer hat den hergestellt?
Hier >> https://www.elektronik-labor.de/Projekte/TPS7.html << gibt es auch so eine Konstruktion in einem ähnlichen Umfang. Es gibt auch Nachbauten auf Basis von kleinen AVR-Microcontrollern.
es gab einen kleineren Bruder vom 8049, hieß 8048. Hiervon gab es einen OTP mit der Bezeichnung 8648. Hersteller war Intel. An einen OTP von 8049 erinnere ich mich nicht. Der Typ mit dem Quarzglasfenster zum Löschen mittels UV war ein 8749. Wieder Hersteller Intel. Ich habe es gehasst: Nach jedem neuen Versuch 15 Minuten warten bis der gelöscht war !
Mitsubishi hat die damals geliefert. Hießen dann 8049-xxP.
Ja, die Dinger zu löschen, war echt zeitaufwendig. Aber so haben wir damals angefangen...
@Kaktusbombe: Ja, ungefähr so, wie das vom großen C. Nur nicht ganz so spartanisch... Ein paar mehr Tasten und LED-Display wär schon schön. Der Kosmos war da schon ganz gut. Nachbauten auf AVR-Basis, das wär was. Ich hab recht lang gesucht, aber nichts gefunden, leider.
Hier: https://www.rigert.com/ee-forum/viewtopic.php?t=1657 Und: https://forum.classic-computing.de/forum/index.php?thread/22241-cpu-8049-platinencomputer/&postID=267472&highlight=Kosmos%2Bcp1#post267472 LG Peter
:
Bearbeitet durch User
Danke für die Links! Den Rigert-Eintrag kenne ich schon, aber da ist wohl leider keine Source, und in die Jahre gekommen ist es auch. Der andere Link ist brandneu! :-) Ich möchte ein bisschen weg von den Hobby-Lösungen ala selbst geätzte Platine. Also oben eine Reihe LED-Anzeigen, darunter die Tasten. Evtl. oberhalb der LED-Anzeigen eine Reihe Pins, damit man das Board in die ersten Pins von einem Breadboard stecken kann. Halbe oder Viertel-Eurokarte würde ich anstreben.
Ralph S. schrieb: > es gab einen kleineren Bruder vom 8049, hieß 8048. Hiervon gab es > einen > OTP mit der Bezeichnung 8648. Hersteller war Intel. > > An einen OTP von 8049 erinnere ich mich nicht. Der Typ mit dem > Quarzglasfenster zum Löschen mittels UV war ein 8749. Wieder Hersteller > Intel. > > Ich habe es gehasst: Nach jedem neuen Versuch 15 Minuten warten bis der > gelöscht war ! Ich meine das war der 8039 und bei Völkner gab es eine Software (Assembler) die MSC48 von Weidner. alles Komandozeile für Dos.
Der müde Joe schrieb: > superalten Lerncomputer "KOSMOS CP1" OT Bereits 15 Jahre früher (1968) brachte KOSMOS den ersten Lerncomputer auf den Markt: https://de.wikipedia.org/wiki/Logikus
Bastler schrieb: > OT Bereits 15 Jahre früher (1968) brachte > KOSMOS den ersten Lerncomputer auf den Markt: > > https://de.wikipedia.org/wiki/Logikus Das hat es wohl damals auch gebraucht, da das alles brandneu war. Sowas in der Richtung werden wir wohl auch für die bald kommenden Quanten-Computer brauchen :-)
Der müde Joe schrieb: > Ja, die Dinger zu löschen, war echt zeitaufwendig. Aber so haben wir > damals angefangen... Was sind schon 5min? Nautilus schrieb: > Ein Programm von ca. 2 kByte Assembler zu erstellen ist schon sportlich > und benötigt deutlich mehr Zeit als das anfertigen der Hardware. Hä? War ich damals Hochleistungssportler? Gut, es gab Vorlagen.
Hmm, gerade mal geschaut was das Ding genau gemacht hatte: 128 Befehlszeilen mit Pseudo Maschinen code (21 Befehle). Das würde man so auch locker in einem AVR rein bekommen, wenn es nur um die Funktion gehen würde. Ansonsten wird es halt teuer, die Original Bauteile zu beschaffen. Der müde Joe schrieb: > Ich hab recht lang gesucht, aber > nichts gefunden, leider. Nicht suchen, machen: Eingabe Hex über Tastatur, Anzeige auf 7-Segment Display und speichern in ein 128er Array. Dann eine kleine Statemaschine, die die Zeilen ausliest und interpretiert. Das sollte kein Hexenwerk sein. Edit: Mal schnell in Github geschaut: https://github.com/RalphBln/kosmos-cp1-arduino-cassette-emulator (Arduino Cassetteninterface) https://github.com/asig/kosmos-cp1 (halt Java, aber die Logik kann man ja übernehmen) Das Kassetteninterface das man bei Git findet, würde ich allerdings durch eine SD card ersetzen. ;-)
:
Bearbeitet durch User
Georg G. schrieb: > Wieder was gelernt. Wie ist die Typbezeichnung für einen 8049 als OTP? 8749. Die gab es mit Glasfenster zum Löschen und als Einweg mit schwarzem Epoxygehäuse. Wenn man seinerzeit eine ROM-Maske bestellt hatte, dann kamen die ersten hundert Teile als OTP. Kleinserien wurden oft auch als OTP ausgeführt, die Maske rechnet sich da noch nicht. Beim Hersteller programmierte OTPs wurden eigentlich immer als 8049 gelabelt, sind also durch angucken von Masken-ROMs nicht zu unterscheiden.
Ja, ich würde auch einen modernen Controller nehmen. Einen 8155 habe ich schon seit 20 Jahren nicht mehr gesehen. Erzähl' mir mehr über die kleine Statemachine, die die Zeilen ausliest und interpretiert. :-) Von Software habe nur recht wenig Ahnung, leider.
Der müde Joe schrieb: > Ja, ich würde auch einen modernen Controller nehmen. Einen 8155 habe ich > schon seit 20 Jahren nicht mehr gesehen. > > Erzähl' mir mehr über die kleine Statemachine, die die Zeilen ausliest > und interpretiert. :-) Von Software habe nur recht wenig Ahnung, leider. Die Statemachine kümmert sich um das Abarbeiten des https://de.wikipedia.org/wiki/Befehlszyklus. Prinzipiell wird mit der Statemachine der nächste Befehl aus dem Programmspeicher gelesen (State1), anschließend durch ein Switch Konstrukt dekodiert (State2), der Befehl ausgeführt (State3), das Ergebnis zurück geschrieben (State4 (optional)) bevor anschließend wieder mit State1 weitergemacht wird.
Hab mir gerade mal den Quelltext des Java CP1-Simulator angeschaut, der im Wikipedia Eintrag verlinkt ist. https://sourceforge.net/projects/cp1-sim/ In dem Archiv findest du die "Statemachine" in der Datei kernel.java im kernel Verzeichnis. Die Statemachine besteht dabei nur aus laden (und prüfen) und ausführen.
1 | public void step() { |
2 | int[] t=new int[2]; |
3 | t=getMem(progcounter); |
4 | if (!isValidCmd(t[0], t[1])) |
5 | die (2, "F 002: laufendes Programm erkennt ungültigen Operationscode in Zeile "+progcounter); |
6 | else
|
7 | execCmd(t[0], t[1]); |
8 | }
|
getMem holt die Instruktion, execCmd führt sie aus. execCmd wertet das Kommando entsprechend aus (decode) und ruft eine entsprechende Funktion auf, die sich um den Rest kümmert, wie z.B. auch das Laden weiterer Operanden.
1 | public void execCmd(int cmd, int param) { |
2 | switch (cmd) { |
3 | case 1: |
4 | CmdHLT(); |
5 | break; |
6 | |
7 | case 2: |
8 | CmdANZ(); |
9 | break; |
10 | |
11 | [...]
|
12 | |
13 | case 20: |
14 | CmdAIS(param); |
15 | break; |
16 | |
17 | case 21: |
18 | CmdSIU(param); |
19 | break; |
20 | |
21 | default:
|
22 | die (2, "F 002: laufendes Programm erkennt ungültigen Operationscode "+cmd+" in Zeile "+progcounter); |
23 | break; |
24 | }
|
25 | }
|
:
Bearbeitet durch User
Der müde Joe schrieb: > Einen 8155 habe ich schon seit 20 Jahren nicht mehr gesehen. Futurlec (ausgerechnet ;-) behauptet, sie hätten 81C55: https://www.futurlec.com/IC80Seriesb.shtml
:
Bearbeitet durch User
Der müde Joe schrieb: > Von Software habe nur recht wenig Ahnung, leider. Das sind aber schlechte Voraussetzungen um so etwas zu bauen. Und um das programmieren zu lernen würde ich dann auch mal ein paar Nummern kleiner anfangen. Was ist denn das Ziel des Ganzen?
Meine Mutter hat meinen CP1 weggeworfen... Nun ja, vielleicht bin ich schon etwas zu alt dafür, aber da ich viel mit Breadboards mache, dachte ich mir, vielleicht ist es möglich, einen Ersatz zu bauen. Der Arduino braucht ja noch einen extra-Computer, um ihn zu programmieren. Hingegen der CP1 völlig autark ist. Wenngleich natürlich mit viel weniger Funktionen. Aber um auf Ereignisse von außen zu reagieren, eine LED zu schalten oder einen Transistor, reichte er völlig aus. Und man kann eine Menge lernen mit dem Teil. Ich bin Hardware-Entwickler.
Ja, tatsächlich, es gibt den 81C55 noch zu kaufen. Unglaublich. (Kopfschüttel) Aber ich würde das ganze schon etwas moderner aufbauen. Da man mit dem original CP1 auch nicht direkt auf der CPU arbeiten konnte, muss die Hardware nicht original sein.
Der müde Joe schrieb: > Ja, tatsächlich, es gibt den 81C55 noch zu kaufen. Unglaublich. > (Kopfschüttel) Es gibt Händler, die nie ihr Lager aufräumen, mit folglich teilweise museumsreifem Angebot. Dazu gehört beispielsweise Kessler, bei denen man noch einen TMS70C02 Mikrocontroller kriegt (diese Baureihe hatte frei definierbare Befehle in Custom Microcode). Und Segor mit antiken SCSI- und Floppy-Controller-ICs, und gebrauchten(!) 8748.
:
Bearbeitet durch User
Neben Retrobastlern gibt es halt auch noch einen gewissen Ersatzteilbedarf. Du kaufst Dir alle zwei Jahre einen neuen PC und ein neues Telefon, aber einen Aufzug oder eine Fräsmaschine von 1980 wird man durchaus noch reparieren wollen. Und da kauft man Ersatzteile deutlich lieber bei Simons/Kessler oder Segor als bei irgendwelchen dubiosen Chinaversendern.
Wird nicht alles irgendwie wertvoll wenn man es 30 Jahre einlagert ? Es gibt sogar einen Markt für altes Spielzeug wie Plastikfiguren.
Zumindest wäre ein ähnlicher Computer durchaus etwas kleiner als das Original. Um es etwas aufzupimpen und auf das Jahr 2020 anzupassen, könnte man das Display vom reinen dezimalen anzeigen der Befehle, mit 14(16)-Segment alphanumerischen Anzeigen die Befehle so anzeigen, wie man sie schreibt, also anstatt 01, 02, 03 dann HLT, ANZ, VZG. Das erste Digit 7-Segment, dann drei Stück 14-Segment, dann drei Stück 7-Segment.
Der müde Joe schrieb: > Zumindest wäre ein ähnlicher Computer durchaus etwas kleiner als das > Original. > > Um es etwas aufzupimpen und auf das Jahr 2020 anzupassen, könnte man das > Display vom reinen dezimalen anzeigen der Befehle, mit 14(16)-Segment > alphanumerischen Anzeigen die Befehle so anzeigen, wie man sie schreibt, > also anstatt 01, 02, 03 dann HLT, ANZ, VZG. Das erste Digit 7-Segment, > dann drei Stück 14-Segment, dann drei Stück 7-Segment. Warum nicht direkt ein einzeiliges(?) LC-Display? Ist von der Ansteuerung auch einfacher.
Hallo schrieb: > Wird nicht alles irgendwie wertvoll wenn man es 30 Jahre einlagert ? Ganz sicher nicht. Wir sind nicht bei "Bares für Rares", wo Profis eine schöne Show abziehen. Dinge sind nur etwas Wert, wenn du sie gegen eintauschen kannst. Irgendwann träumt jedes Kind davon, seine gesammelten Abziehbilder, Legofiguren, Puppen, etc. an reiche Sammler zu verkaufen. Von 1000 Leuten gelingt das vielleicht einem. Am Geld-Spiel-Automat in der Kneipe ist die Gewinnchance geschätzt um Faktor 100 höher. Eigentlich müsste man das den Kindern sagen ... hmmm .. lieber doch nicht. Besser realistisch bleiben und den Müll in den Müll werfen.
Ich habe jetzt mal die Befehle analysiert. Es gibt diese 24 Befehle: ABS, ADD, AIS, AKO, ANZ, HLT, LDA, LIA, NEG, P1A, P1E, P2A, P2E, P3A, P3E, SIU, SPB, SPU, SUB, UND, VGL, VGR, VKL, VZG Die kann ich auf diese Buchstaben herunterbrechen, die man drücken muss, um den Befehl eindeutig zu haben: AB, AD, AI, AK, AN, H, LD, LI, N, P1A, P1E, P2A, P2E, P3A, P3E, SI, SPB, SPU, SU, U, VGL, VGR, VK, VZ Das sind dann diese 15 Einzelbuchstaben: A, B, D, G, H, I, K, L, N, P, R, S, U, V, Z. Zusammen mit den Ziffern 0-9 benötige ich dann 25 Tasten. Mir scheint, das Gerät braucht auch zehn direkte Befehlstasten. STEP, ST(O)P, RUN, CAS, CLR, ACC, CAL, PC, OUT, INP. Diese direkten Befehlstasten sollten Buchstaben sein, die nicht zum erkennen von Befehlen (erster Buchstabe) benötigt werden. Freie Buchstaben wären: B, D, G, I, K, R, Z. Wenn ich auf CAL und CAS verzichte, reicht es trotzdem nicht. Sieben freie Buchstaben, und acht Befehle. Also eine Taste mehr, 26. ---------------------------------------------- Die Matrix der LEDs. 7 + 14 + 14 + 14 + 7 + 7 + 7 = 70 LEDs. ---------------------------------------------- 26 + 70 = 95 Signale. 10x10er-Matrix. Da reicht immer noch ein Microcontroller im DIP28, wenn ich keinen groben Schnitzer gemacht habe.
Habe ich den ODER-Befehl übersehen? Oder fehlt der? Machen die den irgendwie anders?
warum nicht eines der vielen Z80 Projekte oder den Dram <PC vom 8 bit guy? https://www.youtube.com/watch?v=ayh0qebfD2g&t=300s
ODER kann man mit NICHT und UND nachbauen. Und umgekehrt Eigentlich kann man sämtliche Logik aus SN7400 Vierfach-UND-Gattern aufbauen. Und die NASA hat aus MC718G triple NOR Gates einen kompletten Navigationscomputer für ihre Mondfähren gebaut.
Der müde Joe schrieb: > Ein einzeiliges LCD? Ja, ginge auch. 1x8, oder? Ja, oder auch zweizeilig. 1x8, 2x8, 1x16 oder auch 2x16, preislich kaum ein Unterschied. Und was die Tasten angeht, kannst du mit einer Umschalt-(Funktions-)taste Doppelbelegungen machen und so einige Tasten einsparen.
Wow, ein Mordsprojekt, aber ich wollte eigentlich in überschaubarer Zeit fertig werden... Der andere Z80er, braucht einen PLD. Naja, man sieht, dass die Z80-Sachen nicht mehr ganz frisch sind. Ich denke, ein einziger ATmega oder sogar ein aktueller Tiny im DIP-Gehäuse reichen. 3x8 Bit für I/O wären toll. Ja, klar, 2xNegation vor dem UND, gell? Dann hat man das ODER... Aber da INV und UND schon drin sind, würde ich das ODER hinzufügen. Damit es komplett ist.
Der müde Joe schrieb: > Wow, ein Mordsprojekt, aber ich wollte eigentlich in überschaubarer Zeit > fertig werden... Dann nimm einfach ein LCD und implementiere eine PS/2 Schnittstelle für die Tastatur im AVR.
Hi, Ahnungsloser schrieb: > Ralph S. schrieb: [...] >> An einen OTP von 8049 erinnere ich mich nicht. Der Typ mit dem >> Quarzglasfenster zum Löschen mittels UV war ein 8749. Wieder Hersteller >> Intel. [...] > Ich meine das war der 8039 und bei Völkner gab es eine Software > (Assembler) > die MSC48 von Weidner. alles Komandozeile für Dos. Wie von Soul E. geschrieben wurden die 8049 mit Eprom als 8749 gelabelt. Egal ob mit oder ohne Fenster. Elektrisch spielt das Fenster ja keine Rolle. Die 8039 waren die ROMless Variante des 8049/8749. (Angeblich wurden auch welche mit nicht mehr benutzen Maskenversionen oder Fehlern in den Programmiermasken dann als 8039 gelabelt. Aber sicher weiß ich das nicht) Jeder 8049 kann, wie viele Mitglieder der Nachfolgefamilie(8051) mit internem ROM auch, durch Beschaltung eines selevt-Pins auch als ROMless Variante mit externen Speicher betrieben werden. > die MSC48 von Weidner. Du meinst wahrscheinlich MCS48 ;-) Denn das ist der offizielle Name von Intel für die Produktfamilie zu der der 8049 gehört. (Wie MCS51 für die 8051er) Für diese Familie gibt und gab es eine Menge an verschiedenen Tools von verschiedenen Anbietern (OK einen C Compiler habe ich noch nie gesehen ;-), halte es zwar angesichts der Architektur in Verbindung mit dem Alter für unwahrscheinlich das es einen gibt, aber völlig unmöglich ist es nicht) Der müde Joe schrieb: > Wow, ein Mordsprojekt, aber ich wollte eigentlich in überschaubarer Zeit > fertig werden... > Der andere Z80er, braucht einen PLD. Naja, man sieht, dass die > Z80-Sachen nicht mehr ganz frisch sind. > Ich denke, ein einziger ATmega oder sogar ein aktueller Tiny im > DIP-Gehäuse reichen. 3x8 Bit für I/O wären toll. Naja, wenn du HArdwareentwickler bist, dann würde ich zum Lernen die Hardware so einfach wie möglich halten und mir z.B. als Ziel setzen statt den alten Lerncomputer 1-1 Nachzubauen diesen auf einem aktuellen µC weitgehend funktionskompatibel nachzuempfinden. Also mit dem Ziel das du am Ende ein System hast wo du die Beispiele oder eigene Programme für den alten Kosmos Computer eingeben kannst und dein System erzeugt genau dieselben Ausgaben. Dabei lernt man mit sicherheit deutlich mehr als nur die alten Übungen durchzuspielen und zu erweitern. Kann man mit einem kleinen AVR machen. Selbst 3x8Bit I/O ist damit machbar wenn man noch drei/vier IO Pins frei hat. Ein paar Schieberegister und es gibt keine IO Grenzen mehr. Oder du greifst gleich zu einem größeren Controller (Cortex M3, PIC32) und machst alles mit dem einen µC. BTW: Wenn jemand mit einem alten 8039/8049 System etwas spielen will und dem ein Drehencoder, ein paar Taster, drei LED und vier 7-Segmentanzeigen reichen: Ich habe noch ein paar von diesen Funkgeräten (TMC84): http://amateurtele.com/index.php?artikel=95 (weiter unten gibt es eine Detailaufnahme des Logikboards) Diese stellen im Prinzip ein voll funktionsfähiges 8039 µC System mit Eingabe und Ausgabe dar. (Schaltpläne vorhanden) Wenn interesse besteht kann da welche aus der Grabbelkiste raussuchen wo die Logikeinheit und BG funktioniert und gegen aufgerundetes Porto abgeben. (HF & NF Teil dann halt "AS IS") Gruß Carsten
Ich glaub nicht, dass ich das nachbaue, aber 7- und 14-Segmentanzeigen müssen sein!
Könnte man nicht nach Eingabe des Befehls automatisch auf Zahleneingabe umschalten? Doppelbelegung aber automatisch.
Eine eindeutige Befehlsliste wäre nicht schlecht (nicht die vom MCS48, sondern die vom Interpreter der Firmware). Ich glaube dann würde das (auch für einen Hobbyisten) sehr leicht und sehr schnell realisierbar sein. Wobei: 30 Tasten ist schon heftig (nicht vom Programmieren): es braucht viel Platz auf einer Platine. Ich würde 2 Folientastaturen zu je 16 Tasten nehmen: https://www.ebay.de/itm/2PCS-NEU-4-x-4-Matrix-Array-16-Key-Membrane-Switch-Keypad-Keyboard-for-Arduino/263796344890?hash=item3d6b7cc83a:g:iS0AAOSwE3tbPXCf Benötigt dann 12 Leitungen vom Controller und (wenn es denn Retro sein muß) https://www.ebay.de/itm/0-36-0-56-Inch-6-8-Digit-7-segment-LED-Display-Module-TM1637-74HC595/402408108826?hash=item5db164731a:g:RiIAAOSwDkJfUbzM aber zwingend mit TM1637 Chip und nicht mit Schieberegister, denn dann muß lediglich die Tastatur gemultiplexed werden. Davon ausgehend bräuchte es dann noch einen Controlller, der 12 I/O für die Tastatur und 2 I/O für die Anzeige benötigt. Kandidaten wären hier dann: STM32F030 ATMega irgendwelcher STM8S103 Aber wie gesagt, man bräuchte das Manual des "Rechners"
Da gibt es doch diese Taschenrechner-Bausätze, so einen könnte man umprogrammieren: https://de.aliexpress.com/item/32974585332.html
> Hmm, gerade mal geschaut was das Ding genau gemacht hatte: > 128 Befehlszeilen mit Pseudo Maschinen code (21 Befehle). Warum sollte man sich irgent einen Pseudo! Maschinen code ansehen, wenn es mehrere wirkliche (unterschiedliche) CPU-Familien gibt?
Weil dieser Computer nach außen hin ein gaaanz einfacher Computer ist. Darum kann er nur 24 Befehle. Das Gerät ist für Kinder ab 12 Jahren gedacht, und benötigt keinen Extra-Computer. Ich finde, das hat seinen Reiz. Schön wäre es auch, wenn man sich das Gerät selbst zusammenbauen kann. Wobei, 1.27mm Rasterabstand halte ich für Anfänger schon für grenzwertig. Aber die 7-/14-Segment-Anzeigen in SMD/THT sind in einem ausreichend groben Raster. Alle anderen Bauteile gibt es mit 2.54mm Rasterabstand. Ich glaube, für einen Nachbauerfolg kommt man beim Controller nicht um ein DIP-Gehäuse herum.
Crazy H. schrieb: > Könnte man nicht nach Eingabe des Befehls automatisch auf > Zahleneingabe umschalten? Doppelbelegung aber automatisch. Genau! Es ist ja klar, wann Zahlen kommen und wann Buchstaben.
Der müde Joe schrieb: > Das Gerät ist für Kinder ab 12 Jahren gedacht Glaube mir, die programmieren lieber 3D Animationen.
Bei älteren DEC-Maschinen oder auch beim ALTAIR konnte jeder Befehl Bit für Bit in den Speicher geladen werden. Keine Tastatur, dafür jede Menge Kippschalter und einzelne LEDs.
Stefan ⛄ F. schrieb: > Der müde Joe schrieb: >> Das Gerät ist für Kinder ab 12 Jahren gedacht > > Glaube mir, die programmieren lieber 3D Animationen. Genau! Wer erinnert sich nicht an das Jahr 1983, das als das Jahr in die Geschichte einging wo Horden von Teenies den ganzen Tag nichts anderes gemacht haben als 3D Animationen an ihrem Computer zu erstellen ;-) OHJE... Gruß Carsten
Ich habe mir mal das Manual unter: https://www.retrozone.ch/cp1/ angesehen. Angesehen im Sinne von: einiges gelesen (nicht das ganze Handbuch) und einiges überflogen. Verrückt, dass so etwas im Jahre 1983 angenommen wurde. 1985 (aus persönlichem Grund weiß ich das Jahr sehr genau) hatte ich damals für sündhaft teures Geld meinen Sinclair ZX80 gegen einen Schneider CPC64 ausgetauscht. Beim Kosmos CP1 erkennt man Ansätze, wie die interne Struktur "umgebogen" wird. D.h. aus einer Registermaschine wird nun eine Mnemonic generiert, bei der der Akku mit Speicherinhalten verrechnet wird. "Befremdlich" wirkt, dass die Mnemonic deutsche Abkürzungen sind. Hm, noch befremdlicher ist für mich irgendwie, dass Eingaben in dezimaler Weise (und nicht in hexadezimaler Schreibform erfolgt). Wollt ihr wirklich so ein Teil in dieser Funktion nachbauen? Der Interpreter hierfür dürfte relativ einfach sein, das Monitorprogramm etwas - aber nur etwas - schwieriger. Eine Modifikation würde ich vornehmen: Statt der 30 Tasten (wobei die Ziffern 0 bis 9 jeweils doppelt sind, funktional also nur 20 Tasten vorhanden) ein Standard - 16 Tastenfeld nehmen mit 7-Segmentanzeige. Hier wie dafür gemacht: https://www.ebay.de/itm/8-Bit-Digital-LED-Tube-TM1638-Anzeige-Modul-8-16-Key-Keyboard-Arduino-AVR/322983418007?hash=item4b334fd897:g:hEwAAOSwv-ZaL42F Eine Taste gedrückt halten, bspw. links unten, als "Shift"-Taste ist im "Funktionstastenmodus", Shift nicht gedrückt eben Zifferneingabe. Das Modul benötigt 3 Steuerleitungen. Für die Ports (damit man das alles aus dem Handbuch auch nachmodulieren kann) gibts dann (nein, keine Schieberegister, denn die können nur OUT) den PCF8574 in doppelter Ausführung. Somit wären insgesamt 5 I/O Pins von Nöten und damit könnte das ganze in einem 8 pol. ATtiny 85 (wenn man gut ist auch in einem 45er) unterkommen. Oder man spart sich die beiden I2C I/O Expander und realisert 2 Ports auf bspw. einem ATMega8. Das Speichern auf Kassette "emuliert" man auf dem internen EEProm des AVR. Auf einem ATtiny85 oder einem ATmega8 hat man dann doch glatt 512 Bytes Platz, was dann 4 kompletten Programmen des Kosmos CP1 entsprechen würde. Würde mich wirklich interessieren, ob ihr da dran geht und das nachbaut !
No, zumindest ich würde so ein Teil nicht bauen, weder mit nem µC noch im FPGA. Nicht weil es in irgendeiner Hinsicht schwer oder auch nur fordernd wäre, sondern weil ich es einfach für eine sinnlose Krücke halte. Aber wer Spaß dran hat, bitte. Nur wenn ich es machen würde, würde ich wie schon von Stefan geschrieben eher einen der Taschenrechner-Bausätze dafür abändern.
Ralph S. schrieb: > "Befremdlich" wirkt, dass die Mnemonic deutsche Abkürzungen sind. Dann besorg dir mal ein paar Handbücher über zB den 8080 von Fa Siemens. Da findest du dann den Kellerspeicherzeiger und ähnlich schöne Dinge. Auch IBM war gut. Was ist "Einzelkreis pro Kanal Technik"?
Ralph S. schrieb: > "Befremdlich" wirkt, dass die Mnemonic deutsche Abkürzungen sind. Als ich mit dem Studium anfing, hatte man es auf dem Instituts-Mainframe mit originär deutscher Assembler-Sprache zu tun ("bringe" statt "move"), und natürlich waren auch die Job-Kommandos deutsch ("montiere" für den Linker). Das waren auch keine Übersetzungen aus Sonstwoher, sondern die ganze Kiste war deutsch, von Telefunken.
:
Bearbeitet durch User
Georg G. schrieb: > Auch IBM war gut. Was ist "Einzelkreis pro Kanal Technik"? Es gibt eben auch mehrere Dialekte in Fachenglisch. Das Englisch von IBM, und das vom Rest der Welt. So wird eine HDD zum DASD, ein ROM zum ROS, Firmware zum Microcode und ein Device zur Unit. Für IBMs PC/XT gab es ein technisches Handbuch in Deutsch. Allerdings in IBMs Sprachwelt, weshalb das, was man gemeinhin als "device driver" kennt, zum Einheitenverstärker wurde. Deutsch war damals auf unterer Ebene durchaus verbreitet! Von Motorola gab es ein deutsches 68000 Handbuch - allerdings hiess ADD immer noch ADD. Ich verlegte ich mich freilich frühzeitig auf verständlicheres Englisch und bin dabei geblieben, Das kann ich einfach besser.
:
Bearbeitet durch User
Das Gerät sollte so einfach wie möglich sein. Dezimalschreibweise ist halt für Kinder einfacher, als wenn sie obendrauf zu den englischen Fachbegriffen auch noch hexadezimal lernen sollen. Die Konzeption wurde nicht von Elektroingenieuren erstellt, sondern von Pädagogen. :-)
Ich denke, mehr als ein IC, den Microcontroller, braucht man als aktive Bauteile nicht. Im Original ist auch fast nichts drin. Der ATmega32 im DIP28 scheint mir mehr als geeignet und günstig bei Reichelt.
Viele von uns hatten in den 80ern Elektronikbaukästen. Die Computer dazu waren die logische Folge. Ja, sie wurden gerne angenommen. :-) Commodore C64 etc. kamen später und waren sehr teuer. Auch der ZX81 war teuer.
Hm... oder habe ich jetzt da einen Denkfehler? Die Tasten und LEDs von der Anzeige, ca. 96 Signale, in einer 10 x 10 Matrix. 20 Pins. Okay, ich habe die drei I/O-Ports vergessen! Also nochmal 24 Leitungen dazu. Dann reicht ein DIP28 nicht mehr, bei 44 Pins. DIP40? Müssmer vielleicht doch mit Port-Expander arbeiten. Ich schau mal, welche AVRs es in DIP40 gibt, und wieviele I/Os man dann hat. Sch...ss Alzheimer.
Der müde Joe schrieb: > Commodore C64 etc. kamen später und waren sehr teuer. Auch der ZX81 war > teuer. Na sooo sehr teuer ja nun auch nicht. Den ZX81 kostete 1983 (bei erscheinen des Kosmos CP1) um die 300 Mark, wenig später war der ZX-Spectrum für wenig mehr zu bekommen. Und nen C64 gabs Mitte der 80 Jahre auch für 600 Mark. Das war damals genau so bezahlbar wie für heutige Kids 500 Teuro Telefone + Tablet + Playstation... Und der C64 hat sogar ohne in-app Käufe funktioniert... Der müde Joe schrieb: > Okay, ich habe die drei I/O-Ports vergessen! Also nochmal 24 Leitungen > dazu. Dann reicht ein DIP28 nicht mehr, bei 44 Pins. DIP40? > > Müssmer vielleicht doch mit Port-Expander arbeiten. Ich schau mal, > welche AVRs es in DIP40 gibt, und wieviele I/Os man dann hat. Bitte nicht hauen, aber.. wenn schon schnell und billig auf Fremdhardware emulieren, dann bildet doch ein Arduino Mega 2560 die ideale Basis dafür, inclusive genügend Ports und wenig Aufwand. Auch in finanzieller Hinsicht. Außerdem ist dort schon ein gewisser Standardisierungsgrad erreicht, beispielsweise bezüglich der Displayansteuerung. Egal was man von der Sprache hält, für solche Fälle bildet das System eine einfache und schnelle Mögflichkeit zur praktischen Umsetzung ohne Port-Expander und sonstige frickelei.
>Ich schau mal, welche AVRs es in DIP40 gibt,
Dann nimm einen '324, der hat genug Ports.
Damit kann man schon mehr Perif. ansprechen, als man je benutzen kann.
(Oder einen grösseren mit ExtBusIF)
MCUA schrieb: >>Ich schau mal, welche AVRs es in DIP40 gibt, > Dann nimm einen '324, der hat genug Ports. > Damit kann man schon mehr Perif. ansprechen, als man je benutzen kann. > (Oder einen grösseren mit ExtBusIF) Genau einfach einen 324PA für 3 Euronen hat sogar Reichelt. Und wie eigentlich alle AVR im PDIP-40 hat der 4 komplette Ports, also 32 IO-Pins. Ungeachtet dessen, halte ich die Idee für nicht sonderlich ergiebig. Aus eigener Erfahrung kann ich sagen die Kinder (ok, die mir bekannten Kinder) interessieren sich nicht für sowas. Mehr als ein Arduino zum Basteln bekommt man da nicht unter; für eingeschränkte Userinterfaces ist keines davon zu begeistern, weil es eben Ipad und co gibt.
Tim T. schrieb: > Ungeachtet dessen, halte ich die Idee für nicht sonderlich ergiebig. Aus > eigener Erfahrung kann ich sagen die Kinder (ok, die mir bekannten > Kinder) interessieren sich nicht für sowas. Mehr als ein Arduino zum > Basteln bekommt man da nicht unter; für eingeschränkte Userinterfaces > ist keines davon zu begeistern, weil es eben Ipad und co gibt. Sehr schmunzeln muß: ich gebe dir in allem Recht. Das... ist eher ein Spielzeug für die alten (die ganz alten). Wenn einem zu langweilig ist. Oder wie in meinem Falle mein momentanes primäres Projekt hängt und ich einfach an etwas anderes herangehen muß um mich später dem primären Projekt zu widmen. Im Moment bin ich dabei, das lange nicht aus der Schublade geholte Board mit TM1638 und den 16 Tasten zu programmieren. So, dass man mittels einer Taste zwischen Ziffern und Funktionstasten umschalten kann. Das wird dann so sein wie einen Emulator den ich auf einem STM32F4 laufen hatte und der Sinclair Spectrum Spiele abspielen konnte. Das hast du ein paar mal gemacht, aber wenn du Retro-Games Spielen willst, dann spielst du das am PC oder in dem Gameboy-Retro-Pi mit Raspberry Zero (das hat mein Sohnemann, der ist 31), aber auch den legt er dann immer wieder weg. ;-) er hat jetzt eine Retrokonsole am Fernseher mit Raspberry PI. Hier gehts einfach nur darum, das zu machen. Ohne Sinn und Verstand (und wer mir unterstellt ich hätte Verstand, der hat selbst keinen).
PS. Im Übrigen mach ich es mit nem ollen ATmega8, weil hier eine alte Platine rumfliegt, auf der ich normalerweise einen ISP-Programmer mit STK500 Protokoll laufen lasse. Wenn man die Ports wirklich noch implementieren will sollte auch der noch reichen, denn: Das 7-Segment Anzeigeboard mit Tasten benötigt 3 I/O Pins. Zieht man von einem DIP28 ATmega 6 Anschlüße ab (für Vcc, GND, AVcc, AGND, Aref, /res) bleiben 22 Pins übrig. Das reicht für das Anzeigeboard und 2 mal 8-Bit Port
ardu schrieb: > Na sooo sehr teuer ja nun auch nicht. Den ZX81 kostete 1983 (bei > erscheinen des Kosmos CP1) um die 300 Mark, wenig später war der > ZX-Spectrum für wenig mehr zu bekommen. > Und nen C64 gabs Mitte der 80 Jahre auch für 600 Mark. > Das war damals genau so bezahlbar wie für heutige Kids 500 Teuro > Telefone + Tablet + Playstation... Das stimmt so nicht ganz: Ich habe meinen ZX81 für 499.- DM 1981 gekauft. Als Bausatz wohlbemerkt, die Platine mußte selbst bestückt werden. Der wurde sensationell beworben mit "erster PC für unter 500.- DM). Was ich für den CPC bezahlt habe weiß ich nicht mehr, ich weiß nur, dass ich mich entscheiden mußte zwischen C64 und CPC und zu meinem Entscheidungspunkt kostete ein C64 (ohne Datasette) 800.- DM und ich meine der CPC war knapp drunter (mit dem Kassettenlaufwerk im Gehäuse). So.. damals habe ich knapp (Nichtlehrling) 1700.- DM verdient, der Computer war also nicht ganz ein halber Monatslohn ! Dass heutige "Kids" 500 € zur Verfügung haben finde ich an sich schon ein Wahnsinn, aber: 500 € sind nicht mal im Ansatz "nur" ein halber Monatslohn, von daher sind die "Spielzeuge" im Vergleich zu damals irre billig. ------------------------------------------ Heute gebe ich bei weitem keinen halben Monatslohn für einen Computer aus (mal abgesehen davon, dass ich Computer ultralange nutze und ich auch immer nur relativ leistungsschwache Computer habe, schlicht weil ich kein Computerspieler bin): Desktoprechner hier: Ryzen 5 - 1600 16 GB RAM 256 GB SSD 1 TB konventionelle Festplatte Grafikkarte weiß ich gar nicht so genau. Das Teil reicht mir wahrscheinlich noch ein paar Jahre. Natürlich ist der Rechner nicht am Stück gekauft, sondern einfach immer nur mal ausgetauscht, so alle 3 bis 5 Jahre
Sollte eigendlich kein Problem sein, hab mir vor einiger Zeit einen Altair 8800 auf nem Arduino Uno mit 4xMCP23017 und ein 128kb EEPROM emuliert mit den ganzen Schaltern und Leds. Das war zwar nur das Grundgerüst mit 1kb Ram(328p intern) für die Maschine aber es funktionierte! :D
86 Signale für Tastatur und LEDs, in einer Matrix von 11 x 8 Signalen, also 19 Bit. Bleiben 2 Kombinationen übrig. Wurzel 86 ist 9,3. Wären 10 x 9 Signale. Auch 19 Bit. Bleiben aber sogar 4 Kombinationen übrig. 2 x 8 Bit plus 3 Bit vom dritten Port. Beim DIP28 würden nur 4 Bit für die I/Os übrig bleiben, das reicht nicht. Beim DIP40 würden 13 Bit für die I/Os bleiben. Gar nicht mal so schlecht. Oder auf die 14-Segment-Displays verzichten. Oder Port-Expander nehmen. Müssten halt auch im DIP-Gehäuse sein. DIP40 hat 32 I/Os. DIP28 hat 23 I/Os. Beim DIP40 hätte man drei 8-Bit I/O-Ports, und 8 Leitungen frei, um die Ansteuerung für die Tastatur und die LEDs zu realisieren. Beim DIP28 hätte man zwei 8-Bit I/O-Ports, und 7 Leitungen frei, um die Ansteuerung für die Tastatur und die LEDs zu realisieren. Ich denke, beide Varianten laufen auf eine Port-Expander Lösung hinaus, wenn man die 14-Segment-Displays haben will.
Nix Wurzel! 1) Nimm einen 8-Bit-Data-Bus (hat der AVR sowiso), ein paar Adr-Leitungen, und 2..3 Ctr-Leitungen. Damit kann man alles ansteuern. (Data-Bus könnte noch mux'en) 2) oder alles über Shift-Register
.. ich spiele ja schon die ganze Zeit damit herum, und wahrscheinlich braucht es ausser dem ATmega8 (oder größer) und dem TM1638 nichts weiter. ;-) mittlerweile habe ich fast das Handbuch durch (okay irgendie halt selektiv gelesen) und stelle fest, dass die Eingaberoutinen irgendwie wohl das "arbeitsintensivste" sein dürfte (vor allem wenn man das mit dem TM1638 macht). Und man stellt fest, dass diejenigen, die das entwickelt haben wohl schon irgendwie die gängigen RISC Controller im Sinne hatten, weil: Eine Eingabe beinhaltet die Eingabe den Opcode und das Datum zugleich. Ich denke, der Maschineninterpreter ist weniger schreibintensiv als der Monitor (wahrscheinlich deutlich einfacher). Und sie hatten schon an eine Art Debugger gedacht, um zum einen Speicherzellen anzusehen und zum anderen ein Programm mittels Single-Step durchzusteppen.
soooooooo .... ;-) ich habe eine CP1 Emulation doch tatsächlich gemacht und kann man hier im Forum bei den Projekten nachschauen. Beitrag "Kosmos CP1 Emulator mit ATmega" Port I/O und Speicherbefehle fehlen noch, aber alles andere läuft ... ;-) ausgiebig beim Programmieren damit gespielt. Schöne Weihnachten, JJ
Auch schöne Weihnachten, und Dankeschön für diesen tollen Emulator! :-)
Warum nicht einfach so etwas (notfalls 2 oder 2) anstatt dieser I/O Schlachten?: https://www.ebay.com/itm/I2C-Keypad-Module-16-Key-Membrane-Switch-Keypad-Matrix-keyboard-NEW/153432775544?hash=item23b94e5b78:g:okMAAOSwIhxZZcT4 Da findet man auch anderes unter "Keypad i2c" in der Bucht. Sehe gerade: Da bin ich wohl schon zu spät, da hat sich Ralph schon die ganze Arbeit gemacht. Respekt!
:
Bearbeitet durch User
Diese "I/O" Schlachten sind aber notwendig weil sie das wichtigste an so einem "Projekt" sind. Der Maschineninterpreter ist hingegeben relativ simple und sehr sehr schnell gemacht. Wie man dann das Interface programmiert, vor allem wenn man nicht die Anzahl der originalen Konstruktion verwenden mag ist dann zeitintensiver. Verrückt: Man hat zwar das Teil schon einmal programmiert gehabt (das I/O Board), aber die Funktionen sind so anderst als das Einsatzszenario das man so im Kopf hatte, dass man besser das komplett neu geschrieben hätte als das, was man hat anzupassen (jetzt ist es halt angepasst). Im Moment reift in mir so der Gedanke (auch wenn's kein Mensch braucht), eine Platine mit ATmega8 oder ATmega88 zu routen, mit ausgeführten SPI-Pins zum Flashen der Firmware, auf einer Leiste mit RxD / TxD der seriellen Schnittstelle (ohne Bridge), damit man Programme vom PC zu dem Teil übertragen kann und die originalen Funktionen zum Speichern/Laden erweitert auf EEProm, RS232. Als I/O (das ist keine Schlacht) wird ein TM1637 verwendet, der genau die Anzahl der 7-Segmentanzeigen kann die man braucht und auch die Tasten kann. Das wäre dann eine Platine, die dann eben so groß ist wie das oben angegebene I/O Board. ;-) ob ich Lust auf so eine Platine habe weiß ich nicht, weil: Das Teilchen macht zwar Spaß, aber ob es auch Sinn macht weiß ich nicht, weil die Dinge die mit dem Teil vermittelt werden sollen kann ich ja und kein junger Mensch wird das in die Hand nehmen (wobei das vllt. gar nicht mal so schlecht wäre um ein bischen mehr Verständnis für die Technik zu erlangen und nicht nur Konsument sein). ;-) ich hab n bissi Zeit und guck mir mal an, wie ich die Portbefehle machen kann !
Genau! :-) Aber ich habe Sorge wegen dem Treiber-IC. Es ist in SMD und nicht so einfach zu löten. Es gibt aber ein paar Möglichkeiten in THT. Bin ich grade am prüfen.
Ralph S. schrieb: > Im Moment reift in mir so der Gedanke (auch wenn's kein Mensch braucht), > eine Platine mit ATmega8 oder ATmega88 zu routen, mit ausgeführten > SPI-Pins zum Flashen der Firmware, auf einer Leiste mit RxD / TxD der > seriellen Schnittstelle (ohne Bridge), damit man Programme vom PC zu dem > Teil übertragen kann und die originalen Funktionen zum Speichern/Laden > erweitert auf EEProm, RS232. > ;-) ob ich Lust auf so eine Platine habe weiß ich nicht, weil: Das > Teilchen macht zwar Spaß, aber ob es auch Sinn macht weiß ich nicht, > weil die Dinge die mit dem Teil vermittelt werden sollen kann ich ja und > kein junger Mensch wird das in die Hand nehmen (wobei das vllt. gar > nicht mal so schlecht wäre um ein bischen mehr Verständnis für die > Technik zu erlangen und nicht nur Konsument sein). Ach das ist komplett egal ob das nun für andere relevant ist oder nicht... mach einfach Dein Ding. Wenn es danach ginge, hätte ich meinen Microtronic Next Generation auch nicht gemacht. Aber da es mir wichtig ist und es mir Spaß macht, mache ich es halt! Dein Kosmos-Ding ist mindestens so relevant wie die anderen Sachen die hier zusammengebastelt werden. Wer braucht schon einen ATMega Taschenrechner, einen MP3-Player für Kinder, eine Wordclock... gibt es alles besser und "relevanter" zu kaufen. Ist doch ohnehin alles nur für den eigenen Ego- und Lern-Tripp. Kann mir doch keiner erzählen, dass hier in diesem Forum irgendwas von praktischer Relevanz gebaut wird. Also, mach Dein Ding. Platine. Und dann bei Tindie verkaufen als Bausatz mit kleiner Anleitung (oder zusammen gebaut). So mache ich es mit meinem Microtronic Next Generation Board. Dem ein oder anderen wird es gefallen. Du machst was Dir gefällt; egal, was die Leute hier sagen.
Ich bin jetzt ein paar Stunden weiter. :-) Am meisten Probleme bereiten die 14-Segment LED-Anzeigen. Da scheint es nicht so viele preisgünstige Alternativen zu geben. Bei Reichelt habe ich PSA 08-11 RT gefunden. Sind ein bisschen groß, aber rot und mit CA. Günstigere habe ich nur noch bei TMS gefunden, weiß jetzt aber nicht, ob die an privat liefern. Parallel dazu würde ich gerne etwas kleinere, normale 7-Segment LED-Anzeigen setzen. Bei der Ansteuerung gibt es die Ur-Variante mit PNP- und NPN-Transistoren als Zeilen- und Spaltentreiber. Eine weitere Alternative wäre der MCP23017 von Microchip oder der TPIC6B595 von Texas Instruments. Haben zwar nur 8 Bit, sind dafür aber in THT. Ich meine, mich auch an eine 16-Bit-Variante im DIP-Gehäuse erinnern zu können. Generell sind solcherart Chips (Seriell-zu-parallel Wandler) mit oder ohne integrierte Strombegrenzung. Man könnte das kombinieren, mit PNP-Transistoren als Zeilentreiber und TPIC6B595 als Spaltentreiber. Der Strom kann auf 1/6 Duty-Cycle eingestellt werden für die 6 Stück 7-Segment LED-Anzeigen, oder auf 1/7 Duty-Cycle für die 14-Segment LED-Anzeigen. Sollten dann im Mittel bei allen Segmenten 20mA fließen. Mit 16 Tasten auszukommen, ist natürlich eine feine Sache, zumal die 14-Segment-Displays eh' schon 25mm lang sind. Dafür würde dann ein 8-Bit-Port ausreichen. Ich werde jetzt mal einen Schaltplan zeichnen und hier vorstellen.
Ich habe jetzt mal das LED-Display Array aufgebaut, um zu sehen, wie groß das überhaupt wird, wenn man die Displays von reichelt nimmt. Na ja, 207mm ist schon recht breit. Allerdings, habe ich die Problematik der fehlenden Anzeige der Adresse aufgenommen, und dafür auch Displays spendiert. :-)
Der müde Joe schrieb: > Ich habe jetzt mal das LED-Display Array aufgebaut, um zu sehen, wie > groß das überhaupt wird, wenn man die Displays von reichelt nimmt. > > Na ja, 207mm ist schon recht breit. Allerdings, habe ich die Problematik > der fehlenden Anzeige der Adresse aufgenommen, und dafür auch Displays > spendiert. :-) Wie wäre es mit HP alphanumeric bubble displays....
Sowas wie SCD55100? Mit flacher Oberfläche, und 10-stellig. Aber woher nehmen?
Vielleicht habe ich einen Kompromiss gefunden, mit ca. 10cm Breite. Die erste Idee ist, mit Anzeige der Adresse, aber dafür die Befehle in Dezimal anzuzeigen. Die zweite Idee ist, die Adresse anzuzeigen und die Befehle alphanumerisch. Ich denke, die schönste Verbesserung gegenüber dem Original-CP1. Allerdings muss man dann die LED-Anzeigen in SMD nehmen. Gäbe es aber, auf für kleines Geld, bei reichelt. Diese SMD-Anzeigen sind schmäler, ca. 10mm, dafür etwas länger, ca. 19mm. Ich meine, auch Ungeübte könnten diese Anzeigen einlöten.
Mit "Rauf" und "Runter"-Tasten könnte man dann durch das Programm scrollen. Finde ich sehr drollig. :-)
> Und man stellt fest, dass diejenigen, die das entwickelt haben wohl > schon irgendwie die gängigen RISC Controller im Sinne hatten, weil: > Eine Eingabe beinhaltet die Eingabe den Opcode und das Datum zugleich. ..zeigt eher auf CISC hin.. >Am meisten Probleme bereiten die 14-Segment LED-Anzeigen. Es gibt Kingbright kleinere 14-Segm-Anzeigen, PS(X)05 , 0,5 Inch. SA05 sind 7-Segm.
MCUA schrieb: > Es gibt Kingbright kleinere 14-Segm-Anzeigen, PS(X)05 , 0,5 Inch. > SA05 sind 7-Segm. bei Kingbright bin ich immer enttäuscht, das deren Produkte nach aktuellen Maßstäben alles andere als "bright" sind. Achtung beim Katalog: Kingbright verwendet dort die Einheit µCd, wo man eigentlich mCd erwarten würde!
>bei Kingbright bin ich immer enttäuscht, das deren Produkte nach >aktuellen Maßstäben alles andere als "bright" sind. Das kann ich nicht bestätigen. Bereits ab ca 1 mA 'sieht' man das Segment.
MCUA schrieb: > Bereits ab ca 1 mA 'sieht' man das Segment. Das war schon in den 80er Jahren so. Es geht um die Helligkeit. Bei denen hat ein Segment zum Beispiel 5 mcd während selbst die billigste China LED schon 500 mcd hat.
Der müde Joe schrieb: > Mit "Rauf" und "Runter"-Tasten könnte man dann durch das Programm > scrollen. Finde ich sehr drollig. :-) Ja, in der Tat... die Tasten habe ich in meinem Microtronic Next Generation Emulator mit genau der Belegung... Wie wäre es mit LEDs für die Ports?
>> Bereits ab ca 1 mA 'sieht' man das Segment. > Das war schon in den 80er Jahren so. Es geht um die Helligkeit. In den 80er war die Helligkeit (bei gleichem I) viel geringer, es war ein höherer Mind-I erforderlich. Diese Anzeigen sind gut und auch sehr hell, gut zu benutzen, jedenfalls nicht schlechter als andere auch. (Angabe ca 30000ucd) (dieser Anzeigen-Typ kann man nicht mit einzelnen LEDs vergleichen)
(prx) A. K. schrieb: > Das waren auch keine Übersetzungen aus Sonstwoher, sondern die > ganze Kiste war deutsch, von Telefunken. TR440, richtig? War ich auch dran, habe noch ein Heft mit irgendwelchen Befehlen, das muss ich mal suchen.
MCUA schrieb: > Diese Anzeigen sind gut und auch sehr hell, gut zu benutzen, jedenfalls > nicht schlechter als andere auch. (Angabe ca 30000ucd) Das ist hell: https://www.lumex.com/datasheet/LDD-SMHTA304RISITR 4500000 ucd
> Das ist hell: ... > 4500000 ucd ob diese Angabe stimmt ist fraglich, selbst wenn, du brauchst diese ucd um eine Anzeige an einem Gerät abzulesen? aus 20m Entfernung?
MCUA schrieb: > ob diese Angabe stimmt ist fraglich Kennst du diese chinesischen Uhren-Bausätze?: https://de.aliexpress.com/item/4000055210456.html Da werden die LEDs über 330Ω direkt vom Mikrocontroller angesteuert (ohne Treiber). Es fließen etwa 6mA zu 25% der Zeit, dabei ergibt sich eine angenehme Helligkeit. Aber nur deswegen, weil diese Anzeigen sehr viel heller sind, als der alte Kram aus den 90er Jahren.
MCUA schrieb: > aus 20m Entfernung? Busch hatte damals die Microtronic Klassenraum-Ausgabe - mit extra großem und hellen Display :-) 20 cm hohe 7segment Anzeige, damit auch die SchülerIn in der letzten Reihe den Maschinencode lesen konnte. Das Display war natürlich extern. Mach das bloß nicht so hell, das schmerzt den Augen sonst.
> Aber nur deswegen, weil diese Anzeigen sehr > viel heller sind, als der alte Kram aus den 90er Jahren. Ja.. aber das trifft auf neuere von Kingbright auch zu! Und 6mA mit 25% Duty werden bei den PSA.. wohl auch reichen. ich sehe bei denen 0 Problem. Zudem muss man erstmal ne Firma finden, die überhaupt eine vergleichbare Variantenanzahl von Display-Typen herstellt, gerade bei 14/16 Segm.LED-Anzeigen. Ob Lumex das hat bezweifele ich
LDD-SMHTA304RISITR : lt DB (bei Mouser gefund.) : 4500ucd, also schlechter als Kingbright.
LDS-E3904RI gefunden bei Arrow, 1,40 USD netto! Ist 14-Segment, single-digit und THT. Bei dem Preis kann man sich die 7-Segment glatt sparen. Es ist zwar auch 25mm lang, aber nur 10mm breit.
uxdx schrieb: > TR440, richtig? War ich auch dran, habe noch ein Heft mit irgendwelchen > Befehlen, das muss ich mal suchen. Richtig.
Falls es Euch interessiert - hier ist Matze sein Ding. https://www.rigert.com/ee-forum/viewtopic.php?f=35&p=16040#p16040 Er hat damals (vorletztes Jahr?) den ersten CP1-Atmega Emulator auf die Beine gestellt. Könnte mir gut vorstellen, dass dieser Beitrag jetzt wieder ignoriert wird, aber so ist es hier nun einmal :D Na ja ihr könnt ja machen was ihr wollt.
Ein gutes, neues Jahr wünsche ich Euch allen! :-) Erfreulich, erfreulich; ich bin tatsächlich ein gutes Stück weiter gekommen mit meiner Interpretation eines CP1 für 2020. Was noch fehlt, ist die Spannungsversorgung. Die würde ich mit einer Micro-USB-Buchse machen. Gibt's ja auch in THT. Mir schwebt vor, die mittleren Pins abzuzwicken, damit man die beiden äußeren Pins, Plus und Minus, leichter einlöten kann. Ist noch nicht alles fehlerfrei, aber ich denke, man sieht das Konzept. Da ich noch nie mit AVRs gearbeitet habe, bin ich gerne bereit, Änderungen aufzunehmen. Die Platine sollte wenn möglich komplett funktionieren. :-) Wichtig wäre mir, dass alles THT bleibt.
Der müde Joe schrieb: > Ist noch nicht alles fehlerfrei, aber ich denke, man sieht das Konzept. Aha, eine Plazierungsstudie. Als nächstes solltest Du Dir Gedanken machen über das Gehäuse bzw die Aufstellung. Dazu passend werden dann Schraubenlöcher positioniert, Außenkontur optimiert, sowie Sperrflächen plaziert. Dann kommen die Bauteile, welche mechanische Schnittstellen haben (Taster, LEDs), und dann der Rest. Jede Leiterplatte beginnt mit der Mechatronik. Für die, die das vergessen, gibt es Heißkleber.
:
Bearbeitet durch User
Der müde Joe schrieb: > Was noch fehlt, ist die Spannungsversorgung. Die würde ich mit einer > Micro-USB-Buchse machen. Warum nur kommen Leute auf Micro-USB? Ist es nicht schon schlimm genug dass die Wegwerfgeräte-Industrie auf diesen Mist setzt? Es gibt eine Fantastillion andere Anschlüsse, darunter auch einige die mechanisch und elektrisch deutlich besser und robuster sind. Aber wenn es unbedingt mit einer USB-Wandwarze Laufen muss, gibts auch noch USB-B und USB-MiniB, nur MicroB muss doch echt nicht sein.
:
Bearbeitet durch User
So, jetzt bin ich mal soweit fertig mit dem Layout. Ein paar Änderungen musste ich machen, damit das Board zweilagig bleiben kann. Die Widerstände und Kondensatoren sind als SMT in der Bauform 1206 auf der Rückseite. Was ich noch ergänzen würde: - Das 'rauf- und 'runterlaufen (durchsteppen) im Programm-Listing, z. B. mittels Pfeil-Tasten(?) - Einfügen und löschen von Zeilen - ODR (ODER)-Befehl - Umschaltung (toggeln) zwischen der originalen dezimalen und einer hexadezimalen Anzeige - Einlesen einer analogen Spannung an z. B. 4 Pins, Befehl "ANA". Dann könnte man auch mit Sensoren spielen.
Tim T. schrieb: > Warum nur kommen Leute auf Micro-USB? Weil sie zu Hause eine Kiste mit Handy-Ladern und RasPi-Netzteilen mit Mikro-USB-Steckern rumliegen haben?
> einer USB-Wandwarze Laufen muss, gibts auch noch USB-B und USB-MiniB, > nur MicroB muss doch echt nicht sein. Micro-USB und USBC ist fuer 10000 Steckzyklen spezifiziert. Die anderen deutlich weniger. Altes Standard-USB nur 500-1000x stecken. Olaf
Olaf schrieb: >> einer USB-Wandwarze Laufen muss, gibts auch noch USB-B und USB-MiniB, >> nur MicroB muss doch echt nicht sein. > > Micro-USB und USBC ist fuer 10000 Steckzyklen spezifiziert. Die anderen > deutlich weniger. Altes Standard-USB nur 500-1000x stecken. > > Olaf Micro-USB hält real definitiv keine 10000 Steckzyklen aus, egal was auf irgendwelchem Papier steht. In der Regel bezieht sich die Anzahl der Steckzyklen ja nur auf den Abrieb der Goldbeschichtung unter Einwirkung der Federkraft beim Steckvorgang. Ein reales Nutzungsverhalten ist da in keinster Weise gegeben; dort halte ich selbst 1000 Steckzyklen für mehr als ambitioniert. Nur neben den minderwertigen mechanischen Eigenschaften, kommen bei Micro-USB auch noch die grottigen elektrischen dazu, also gibt es außer der größeren Verbreitung wirklich keinen Grund diesen Stecker zu Benutzen. Ist halt leider das inverse Henne Ei Problem geworden, man nimmt Micro-USB, weil man oft Micro-USB hat und sorgt so dafür das es wieder ein Gerät mehr mit Micro-USB gibt...
Olaf schrieb: > Micro-USB und USBC ist fuer 10000 Steckzyklen spezifiziert. Die anderen > deutlich weniger. Altes Standard-USB nur 500-1000x stecken. Das entspricht auch meiner Erfahrung. Obwohl die Buchsen viel kleiner und mechanisch empfindlicher sind halten sie länger. Bei Mini-USB sehe ich zudem den Nachteil, dass die Kontaktfedern in der Buchse des Gerätes sind. Bei Micro-USB sind sie hingegen Bestandteil des Kabels und daher leichter austauschbar. Man muss dazu sagen, dass die Micro-USB Buchsen bei einigen Herstellern auch sehr viel stabiler geworden sind, als die anfangs waren. Wenn dann noch durch die Gehäuseform verhindert wird, dass man den Stecker abbrechen kann (wie bei einigen TomTom) ist man schon ganz gut bedient.
Der müde Joe schrieb: > - Das 'rauf- und 'runterlaufen (durchsteppen) im Programm-Listing, z. B. > mittels Pfeil-Tasten(?) > - Einfügen und löschen von Zeilen > - ODR (ODER)-Befehl > - Einlesen einer analogen Spannung an z. B. 4 Pins, Befehl "ANA". Dann > könnte man auch mit Sensoren spielen. Sinnvolle Erweiterungen, und haben wir auch im Microtronic Emulator. Da Du schon Alphnumerische Azeige hast - wie wäre es mit MNEMONICS? HEX halte ich beim CP1 für wenig sinnvoll. Auch würde ich anraten, das Original-Keylayout soweit als möglich beizubehalten. Die Funktionstastenanordnung gefällt mir so nicht. Stimme zu - Micro-USB ist suboptimal.
Zu Erinnerung - Tastenlayout der Original-Version. Bitte beachten dass das stark verwirrend ist, wenn die Tasten sehr anders angeordnet sind, da man als Anfänger gerne eine 1-zu-1-Experience wie im Anleitungsbuch haben möchte. Das ist ein Lerncomputer. Beim Microtronic-Emulator haben wir peinlichst darauf geachtet, dass die Tasten wie im Original angeordnet sind. Zusatz-Tasten sind zwar vorhanden, aber haben einen separaten Abschnitt mit eigener Beschriftung im anderen Font, sodass klar wird, dass das nicht original ist. Ich hänge das zur Illustration mal mit an.
Hallo zusammen, falls es wen interessiert: 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:
1 | AKO 0 |
2 | >loop: |
3 | ANZ |
4 | VZG 250 |
5 | ADD one |
6 | SPU loop |
7 | |
8 | >one: |
9 | # 1 |
Der Assembler macht draus:
1 | user@machine:# kosmos_asm.php example.koa -c -d |
2 | |
3 | AKO 000 | 000: 04.000 | Konstante 000 in den Akku laden |
4 | |
5 | >loop: |
6 | ANZ | 001: 02.000 | Akku-Inhalt anzeigen |
7 | VZG 250 | 002: 03.250 | Verzögern um 250 ms |
8 | ADD one | 003: 07.005 | Zum Akku Inhalt von Zelle 005 (one) addieren |
9 | SPU loop | 004: 09.001 | Springe zu Adresse 001 (loop) |
10 | |
11 | >one: |
12 | # 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:
1 | GPIO: --------o-----[1 kOhm]------ Port 1/8 |
2 | | |
3 | -----, |
4 | ^ Zener diode 3,3 V |
5 | / \ |
6 | ----- |
7 | | |
8 | GND: --------o-------------------- GND |
Also, wer noch einen Kosmos CP1 rumliegen hat und Zugriff auf einen Raspberry Pi hat, der sollte sich das mal ansehen! Für Nachbauten müsste man halt dann einen Weg finden, die .json Daten in den Speicher zu bekommen. Außer man baut die Kassetten Lese- und Schreibroutinen auch originalgetreu nach ;)... LG Moosy
Schöne Sache! Auch wenn Assembler mit CP1 fast umständlicher ist als Maschinensprache direkt ;-) Insbesondere die Hochlade-Möglichkeit ist nett. Nun fehlt nur noch ein Emulator... testen auf dem Emulator, hochladen in den CP1 wenn's fertig ist, insbesondere da das Kassetteninterface so lahm ist. Martin Sauter hat damals was ähliches für den Microtronic gemacht: https://gitlab.com/heurekus/Busch-2090-Projects Die Tape Emu haben wir dann in unsere Arduino Projekte / Emulatoren integriert: https://github.com/lambdamikel/microtronic-2095-arduino-emulator https://github.com/lambdamikel/Busch-2090
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.