Ich habe ein altes Phytec miniCon-535/LC Board, aber keine Unterlagen dazu.
Mit Spannungsversorgung läuft es und ich kann das Basic mit der Eingabe von "basic" im seriellen Terminal (9600baud) eingeben.
Ich bin auf der Suche nach den Basicbefehlen und insbesondere wie man Graphik auf dem Display darstellen kann.
Ich würde einfach mal bei Phytec nach Unterlagen nachfragen. Meist waren die auch als PDF abrufbar und ich kann mir nicht vorstellen, dass dort keine Unterlagen für ihre Boards mehr vorhanden sind. Ich hatte früher beruflich mit Phytec öfter Kontakt und konnte mich über deren Service nicht beklagen.
Ich würde einfach mal bei Phytec nach Unterlagen nachfragen.
Danke für den Hinweis. Das wäre vielleicht der einfachste Weg. Eigentlich untersuche ich das Board nur aus Interesse. Das angezeigte Datum ist ja 1988 und das ist schon eine ganze Weile her. Mich wundert ja, dass das EPROM die Daten noch nicht verloren hat.
Da sich das Board über die RS232 ansprechen und bedienen lässt, habe ich schon ein paar Sachen durch Probieren heraus gefunden. Ich überlegen, einen Memory-Dump zu machen und die Befehle vielleicht optisch zu entdecken.
Hier mal die bisherigen Erkenntnisse.
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
Ich bin auf der Suche nach den Basicbefehlen
Das dürfte ein Derivat vom 8052AH Basic sein. Zum Einstieg evtl. https://www.mikrocontroller.net/attachment/132185/8052AH-BASIC_Users_Manual.pdf
Evtl. hilft dies hier auch:
https://www.phytec.de/fileadmin/legacy/downloads/Manuals/L-386E.pdf
https://www.phytec.de/fileadmin/legacy/downloads/Manuals/L-002E.pdf
Ich habe ein altes Phytec miniCon-535/LC Board, aber keine Unterlagen dazu.
Hier gibt es ein Hardware Manual vom miniCON-535, allerdings nicht vom LC. https://www.phytec.de/fileadmin/legacy/downloads/Manuals/L-002E.pdf
Ich bin auf der Suche nach den Basicbefehlen ...
Basic als höhere Programmiersprache sollte, bis auf irgendwelche proprietären Erweiterung, die gleichen Grundbefehle verwenden, wie anderen Basic-Interpreter auch.
... und insbesondere wie man Graphik auf dem Display darstellen kann.
Das Display hängt wohl über einen Port am µP, d.h. da brauchst du das Manual vom Graphikcontroller.
Das dürfte ein Derivat vom 8052AH Basic sein.
Das vermute ich auch. Hier ein Link zum Reference Manual:
https://www.dos4ever.com/8031board/Basic52Manual.pdf
rhf
Vielen Dank für eure Antworten.
Das Basic auf dem minConLC-Board scheint tatsächlich recht ähnlich. Die meisten Kommandos funktionieren und es gibt auch ein paar Erklärungen im Manual die weiterhelfen. Schön wäre es natürlich, wenn man ein Repository mit ein paar Programmbeispielen hätte. Damals gab es aber github noch nicht.
Ich habe noch das Spezifikationsblatt des minCon_LC gefunden.
Unpraktisch bei dem Basic ist, dass es kein "print at x,y" wie bei manchen frühen Basic-Computern gibt. Das heißt, man kann das LCD nur Zeichenweise füllen. Oder wie seht ihr das?
Wenn Du die Firmware des Boards hier hochlädst kann man schauen was es für Befehle gibt.
Schön wäre es natürlich, wenn man ein Repository mit ein paar Programmbeispielen hätte.
Na ja, der Befehlsvorrat ist überschaubar und BASIC ist jetzt auch nicht gerade C++. Von daher dürfte es recht einfach sein selbst ein paar kleine Beispielprogramme zu schreiben. Um die Beschäftigung mit der kontrollerspezifischen Eigenschaften (also Lage und Funktion der SFR) kommst du eh nicht herum.
Unpraktisch bei dem Basic ist, dass es kein "print at x,y" wie bei manchen frühen Basic-Computern gibt.
Dafür hast du ja das BASIC. :-) Ist ja jetzt kein Hexenwerk selbst ein entsprechendes Unterprogramm zu schreiben.
Wenn Du die Firmware des Boards hier hochlädst kann man schauen was es für Befehle gibt.
Das ist eine gute Idee! Vielleicht ist ja ein entsprechender PRINT-Befehl dabei.
rhf
Dafür hast du ja das BASIC. :-) Ist ja jetzt kein Hexenwerk selbst ein entsprechendes Unterprogramm zu schreiben.
Da verstehe ich nicht ganz, wie du das meinst.
Christoph M. schrieb:
Unpraktisch bei dem Basic ist, dass es kein "print at x,y" wie bei manchen frühen Basic-Computern gibt.
Dafür hast du ja das BASIC. :-) Ist ja jetzt kein Hexenwerk selbst ein entsprechendes Unterprogramm zu schreiben.
Ich vermute, Christoph wollte den Text pixelgenau positionieren. Das wird so oder so nicht funktionieren. Die meisten einfachen BASIC-Dialekte konnten keine Grafik (das gab die Hardware gar nicht her) sondern konnten Text nur auf einen 80x25 oder 40x25 Zeichenraster plazieren.
Mit den grafikfähigen Heimcomputern gegen Ende der BASIC-Ära kamen zwar BASIC-Dialekte auf, die das konnten. Aber verbreitet waren die zumindest in meiner Wahrnehmung nicht. Erkennen konnte man die recht einfach: wenn sie Primitiven wie LINE, RECT oder CIRCLE anboten, konnten sie zumindest Grafik. Aber Textausgabe war dann trotzdem meist auf ein festes Raster (typisch 8x8 Pixel) beschränkt.
Das hat mit der Organisation des Bildwiederholspeichers (Frame Buffer) zu tun. Ein Pixel entsprech damals typischerweise einem Bit. Adressierbar waren aber nur Bytes. Um ein Pixel an einer beliebigen Position zu setzen (bzw. löschen) brauchte man also einen read-modify-write Zyklus. Für ein Zeichen aus einem 8x8 Zeichensatz sind das 64 solche Zyklen. Zum Schreiben eines Zeichens auf eine Position im 8x8 Raster brauchte man aber nur 8 Schreibzugriffe. Das ging also deutlich fixer.
BASIC-Dialekte konnten keine Grafik (das gab die Hardware gar nicht her) sondern konnten Text nur auf einen 80x25 oder 40x25 Zeichenraster plazieren.
Ein erster Schritt könnte schon die Positionierung mit Zeichenauflösung sein, aber es wäre natürlich viel toller, wenn man z.B. auch einen Temperaturgraph zeichnen könnte. Im Anhang die Displayplatine von hinten.
Mit den grafikfähigen Heimcomputern gegen Ende der BASIC-Ära kamen zwar BASIC-Dialekte auf, die das konnten. Aber verbreitet waren die zumindest in meiner Wahrnehmung nicht. Erkennen konnte man die recht einfach: wenn sie Primitiven wie LINE, RECT oder CIRCLE anboten, konnten sie zumindest Grafik. Aber Textausgabe war dann trotzdem meist auf ein festes Raster (typisch 8x8 Pixel) beschränkt.
Schon die Grafikbefehle des Commodore Basic 3.5 (C16, C116, Plus4) können das. Der Text allerdings im Graphikmodus geschrieben, was Einschränkungen der Geschwindigkeit nach sich zieht.
Diese Grafikroutinen habe ich vor vielen Jahren als Basis für eine Erweiterung des Extended Basic (Exbasic) für den C64 benutzt.
Aber was will man heute mit einem Basic auf der Basis 8052 noch anfangen?
Für die PIC32 gibt es ein Basic als C-Projekt. Damit kann man innerhin das Basic sehr leicht um eigene Befehle erweitern, deren Ausführung durch den Basicinterpreter für eine sinnvolle Anwendung zu langsam wäre. Also z.B. ein Messraster in eine Grafik einblenden.
Die Hardware ist dafür recht einfach gestrickt: Maximite/Duinomite. Der Controller (PIC32MX795F512) ist ein PIC32 mit immerhin 80 MHz Takt.
Schon die Grafikbefehle des Commodore Basic 3.5 (C16, C116, Plus4) können das.
Das nützt in dem Fall aber wenig, da es keine Grafikkommandos gibt.
Das angehängte File mit dem Kommandos habe ich über Memory-Dumps und KI-Hilfe generiert und sieht dem hier ganz ähnlich:
Das vermute ich auch. Hier ein Link zum Reference Manual:
So sieht die miniCon-Platine aus.
Die Spannung der Bufferbatterie ist mittlerweile =0. Wo kriegt man den so eine Bauform her?
So sieht die miniCon-Platine aus. Die Spannung der Bufferbatterie ist mittlerweile =0. Wo kriegt man den so eine Bauform her?
https://www.reichelt.de/de/de/shop/produkt/memopuffer_2_4_v_80_mah_rm_12_nimh-1956
Schon die Grafikbefehle des Commodore Basic 3.5 (C16, C116, Plus4) können das.
Das nützt in dem Fall aber wenig, da es keine Grafikkommandos gibt. Das angehängte File mit dem Kommandos habe ich über Memory-Dumps und KI-Hilfe generiert und sieht dem hier ganz ähnlich:
Mein Bezug war die Aussage:
... Die meisten einfachen BASIC-Dialekte konnten keine Grafik (das gab die Hardware gar nicht her) sondern konnten Text nur auf einen 80x25 oder 40x25 Zeichenraster plazieren.
Was direkt wieder zu der Frage führt, was will man mit einem Basic das auf einem 8052 Derivat basiert, dass man nicht einmal für seine Zwecke anpassen kann. Z.B. Grafikbefehle beim Interpreter nachrüsten. Ein "ganz ähnlich" wird nicht reichen. Wäre es nicht auf einem 8052 Derivat basieren würde, sondern auf einem 8052, und der für das 8052AH-Basic geplanten Hardware, wäre dies immerhin möglich.
Eine Grafik die elementar mit Basicbefehlen aufgebaut und verändert wird, ist unbenutzbar langsam.
Alternativen habe ich ja erwähnt.
Das BASIC von Phytec war eine Lizenz des Intel 8052AH BASIC mit einigen Erweiterungen und auch Fehlerkorrekturen des originalen Intel-Codes. Soweit ich mich erinnere, hat Guido Philippi da tief die Finger drin gehabt, der später ein eigenes Ing.-Büro in Frankfurt Kelsterbach gründete. Vielleicht beantwortet er dir noch Fragen.
Graphikbefehle gab es keine drin. Als Studenten haben wir bei Phytec mal eine Graphikbibliothek in Assembler angefangen, sie wurde aber nie fertig. Ich hatte den Bresenham bis hin zum Zeichnen von maskierten Ellipsen implementiert. Es lief aber einfach zu langsam, um praktisch verwendbar zu werden. Der Display-Controller ist strunzdumm und das Setzen von Grafikpunkten sehr umständlich, was die Sache äußerst behinderte.
Alles Geschichte.
Der Display-Controller ist strunzdumm und das Setzen von Grafikpunkten sehr umständlich, was die Sache äußerst behinderte.
Dass das Board (und die LCD) nach 40 Jahren immer noch funktioniert, finde ich ja äußerst verwunderlich. Auch weil die sich darauf befindenden EPROMs ja mittlerweile ihre Ladung verloren haben könnten. Dem ist aber nicht so. Es ist ja nur eine Spielerei. Wenn ich wüsste, an welche Stellen ich "hinein poken" müsste, könnte ich ja die Zeichen direkt an die richtige Stelle setzen.
Du weißt ja nicht, ob nicht doch ein paar Bits schon gekippt sind. Solange der Prozessor dort nicht vorbeirauscht, hat es keine Auswirkung.
Der Displaycontroller ist ein Toshiba T6963C. Soweit ich mich erinnere, wird er über zwei Speicheradressen angesprochen und dämlicherweise war er glaub auf 6Bit(Pixel) pro Byte im Grafiklayer hardwaremäßig voreingestellt (Bin mir nicht ganz sicher). Es gibt noch eine Textlayer, die den internen Charactergenerator benutzt. Also ein Byte ASCII gleich ein komplettes Zeichen auf dem Display.
Vielleicht findest du eine Memorymap oder den Schaltplan. Ich habe da nix mehr, leider.
Dem TO wurde bereits vorgeschlagen die Firmware (Dump der EPROMs) hier hochzuladen well das weitere Einblicke ermöglichen würde. Will er aber scheinbar nicht, dann gibt es halt keine weiteren Einblicke...
Dem TO wurde bereits vorgeschlagen die Firmware (Dump der EPROMs) hier hochzuladen well das weitere Einblicke ermöglichen würde. Will er aber scheinbar nicht, dann gibt es halt keine weiteren Einblicke...
So ungefähr .. vielleicht noch mit der kleinen Ergänzung, dass es der TO selbst vorgeschlagen hat (ich).
Hier bitteschön: der EEPROM dump nach 40 Jahren.
So ungefähr .. vielleicht noch mit der kleinen Ergänzung, dass es der TO selbst vorgeschlagen hat (ich).
Du hast darauf
Beitrag "Re: altes Phytec MCB-51 Monitor/Basic Befehle?"
nicht reagiert.
Ich bin auf der Suche nach den Basicbefehlen
Hier bitteschön: der EEPROM dump
1 |
|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 |
|
40 |
|
41 |
|
42 |
|
43 |
|
44 |
|
45 |
|
46 |
|
47 |
|
48 |
|
49 |
|
50 |
|
51 |
|
52 |
|
53 |
|
54 |
|
55 |
|
56 |
|
57 |
|
58 |
|
59 |
|
60 |
|
61 |
|
62 |
|
63 |
|
64 |
|
Die restliche Ausgabe von 'strings' sieht nicht nach BASIC-Befehlen aus...
So weit war ich auch schon. Es geht ja um die Frage, wie X,Y Pos auf dem LCD setzen.
Es geht ja um die Frage, wie X,Y Pos auf dem LCD setzen.
Der Displaycontroller ist ein Toshiba T6963C
Es ist erst 20 Jahre her, das ich mich mit dem T6963 beschäftigt habe. Kennst Du denn schon die I/O- bzw. Speicheradresse vom Display-Controller?
Wenn ja, würde ich mich von der u8glib inspirieren lassen: https://github.com/olikraus/u8glib
Wenn nein, dann entweder eine Dokumentation zum Board beschaffen oder die Leitungen zum Display ausklingeln.
Es ist erst 20 Jahre her, das ich mich mit dem T6963 beschäftigt habe. Kennst Du denn schon die I/O- bzw. Speicheradresse vom Display-Controller?
Leider nein. Wahrscheinlich müsste man den aus dem EPROM-Binary rausfieseln.
Der EPROM Dump liegt ab Adresse 0x8000, die Display Initialisierung ist bei Adresse 0xE943. Da kann man sich ansehen wie die Kommunikation mit dem Display Controller funktioniert.
Es sieht auf den ersten Blick nicht so aus als ob der Grafik Modus verwendet wird.
Auf der Platine ist ein programmiertes GAL (Der schmale Baustein mit weißen Label). Darin befindet sich wie bei sehr vielen Modulen von Phytec der Adressdekoder.
Aber vielleicht fragst du einfach Phytec, ob sie dir ein paar Fotokopien aus dem Archiv schicken.
Der MC535/LC wurde wesentlich weniger oft als die MM535 verkauft. Die Displayplatine wurde zugekauft, da gibt's vielleicht woanders noch ein entsprechendes Datenblatt.
Wenn man weiß wie der Displaycontroller antworten muß, kann man ja auch bisserl wild im Adressraum rumpoken, bis er reagiert. Das DB hast du ja nun.
Wenn man das MCB-51 BASIC des Boards mit dem original Intel MCS BASIC-52 von 1986 vergleicht gibt es folgende Unterschiede:
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
Die Details zu den neuen Befehlen kann man relativ leicht aus dem Code herausfinden wenn man dazu in den Source Code des Originals von Intel schaut.
Source Code des Originals von Intel schaut.
Meinst du das hier?
https://github.com/mit41301/BASIC-52_VER1.1
Steht ja auch im Readme dass es sich um den Intel BASIC-52 Source Code handelt.
Und die obigen neu dazu gekommenen Befehle sind fast alle so einfach bzw. offensichtlich dass man noch nicht mal in den Code schauen muss um ihre Funktion zu erkennen bzw. es reicht aus sie einfach nur auszuprobieren.
Und die Ansteuerung der RTC des Boards ergibt sich aus dem Code an Adresse 0xD64F (RCLOCK) und 0xD710 (SCLOCK).
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.




