Hallo, zusammen!
Ich überlege, wie man den mittlerweile superalten Lerncomputer "KOSMOS
CP1" nachbauen kann.
https://de.wikipedia.org/wiki/Kosmos_CP1http://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?
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 !
@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.
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.
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. ;-)
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
publicvoidstep(){
2
int[]t=newint[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
publicvoidexecCmd(intcmd,intparam){
2
switch(cmd){
3
case1:
4
CmdHLT();
5
break;
6
7
case2:
8
CmdANZ();
9
break;
10
11
[...]
12
13
case20:
14
CmdAIS(param);
15
break;
16
17
case21:
18
CmdSIU(param);
19
break;
20
21
default:
22
die(2,"F 002: laufendes Programm erkennt ungültigen Operationscode "+cmd+" in Zeile "+progcounter);
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.
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.
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.
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
> 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.
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.
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.
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
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....
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.
> 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.
> 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
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.
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.
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.
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
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