Hallöchen ! Mein nächstes Bastelprojekt wird ein 8051-System sein auf dem ein einfacher 8051-Assembler laufen soll. Es soll alles Text-basiert sein und auf einem Bildschirm etwa 50x25 Zeichen ausgeben bzw. die Zeichen in ein Zeichenbuffer-RAM schreiben. Mit wieviel kB Programmspeicher-Bedarf muss ich rechnen ? Reichen 32kB ?
Frage 348795081542 schrieb: > Hallöchen ! > > Mein nächstes Bastelprojekt wird ein 8051-System sein auf dem ein > einfacher 8051-Assembler laufen soll. Es soll alles Text-basiert sein > und auf einem Bildschirm etwa 50x25 Zeichen ausgeben bzw. die Zeichen in > ein Zeichenbuffer-RAM schreiben. > > Mit wieviel kB Programmspeicher-Bedarf muss ich rechnen ? Reichen 32kB ? Bestimmt sind 32k genug. Ein Tipp: Auch, wenn es die Architektur beim MCS51 nahe legt, trenne nicht RAM und Eprom. Für die Fehlersuche ist es bequem, Code im RAM ausführen zu können. Und als Eprom würde ich einen Fash Typ nehmen. Notfalls die ungenutzten Adressleitungen fest auf GND oder Jumper GND/VCC.
Soll der 8051 denn den Bildschirm direkt bedienen oder überlässt du das einem Terminal mit serieller Schnittstelle? Im ersteren Fall benötigst du zumindest einen Rastercontroller wie den alten 6845 oder eine selbstgebaute Logik mit Framebuffer RAM a la Apple ][ oder Sinclair ZX80/81. Im 2ten Fall ist evtl. ein Monitor Programm das erste, was du implementieren solltest. Ob da ein kleiner Assembler oder Disassembler mit bei ist, bleibt dir überlassen. Ich habe einen 8052 Monitor mit Disassembler in 8k EPROM, aber das geht sicher auch noch etwas kleiner.
:
Bearbeitet durch User
Zur Peilung: In grauer Vorzeit passte ein symbolischer Assembler für 6502 in 4 KB 6502-Code, in Assembler geschrieben. Also der Assembler pur, nicht der Support für Tastatur, Bildschirm und Massenspeicher. Wird bei 8051 auch nicht schlimmer ausfallen.
A. K. schrieb: > passte ein symbolischer Assembler für > 6502 in 4 KB 6502-Code Klingt doch gut. Intel hat ja auch ein komplettes Basic mit Gleitkomma in 8kB gepackt.
Matthias S. schrieb: > Sinclair ZX80/81. Wie gut kommen heutige LCDs eigentlich damit zurecht? Damaligen Röhrenfernsehern wars ziemlich egal, wenn das Signal mal weg und mal wieder da war. Sobald es wieder da war, kam auch sofort das Bild. LCDs habe ich im Verdacht, dass es ziemlich dauert, bis die dem Signal über den Weg trauen. Wobei sich Sir Sinclairs bizarre Methode der Display-Ansteuerung nicht so leicht auf einen 8051 übertragen lässt. Die ist etwas zu sehr von speziellen Eigenschaften der Z80 abhängig.
A. K. schrieb: > Wie gut kommen heutige LCDs eigentlich damit zurecht? Naja, BAS bleibt BAS und mehr konnte der Sinclair ja nicht. Mein 15" LCD, den ich über einen Konverter mit FBAS füttere, klappt jedenfalls. Allerdings liefert der Konverter immer ein Rastersignal, so das der Eingang auch mal komplett ausfallen kann, ohne das der LCD aus dem Tritt kommt.
Georg G. schrieb: > Ein Tipp: Auch, wenn es die Architektur beim MCS51 nahe legt, trenne > nicht RAM und Eprom. Äh, hust, wir haben 2017 und es gibt die Silabs EFM8 als 8051ger mit integriertem Flash und on-chip-Debugging. IIRC gibt es da auch ein nicht allzu teures STK mit LCD. Da ist dann gleich der Programmer mit drauf. Frage 348795081542 schrieb: > auf einem Bildschirm etwa 50x25 Zeichen ausgeben Hmm, das LCD hat nur 128x128 Punkte. Aber Du kannst IIRC über USB einen seriellen Port benutzen. Frage 348795081542 schrieb: > Reichen 32kB ? Normalerweise ja.
Also werden 32kB wohl reichen. Gibt es eigentlich Bücher oder Anleitungen wie man einen Assembler schreiben kann ?
> Gibt es eigentlich Bücher oder Anleitungen wie man > einen Assembler schreiben kann ? Was soll man da großartig erklären? Syntax lernen, verstehen und dann umsetzen. Das hatte ich als Teenager zum Spaß gemacht - für den 8051.
Die wenigsten hier wollen einen Assembler, der auf dem 8051 Zielsystem selber läuft - zumal man sowieso einen auf dem PC braucht, um den Assembler auf dem 8051 zu schreiben :-P Deswegen wird man da nicht viel finden. Es ist einfacher, am PC zu schreiben und zu assemblieren und dann ein HEX oder wasauchimmer aufs Zielsystem zu laden. Defür hatte ich mir damals den Monitor geschrieben. Der kann unter anderem sowas empfangen und dann ausführen. Wenn du es dir richtig einschenken willst, schau dir den Quellcode zum o.a. 8051AH Basic an. Da wird eine komplette Programmiersprache implementiert.
:
Bearbeitet durch User
Hauptsächlich ne Fleissarbeit. Das einzige, was man das Programm selbstständig machen muss: Adressen/Sprungziele korrekt berechnen. Und sinnvolle Fehlermeldungen produzieren. Einen vollständigen und fehlerfreien Assembler zu programmieren ist aber dennoch eine ziemliche Aufgabe - ich möchte das nicht machen, nichtmal auf dem PC als cross-Assembler. Mach dir was kleines mit sehr beschränktem Befehlssatz, das reicht zum Lernen wie sowas funktioniert (das ist immer ein guter Ansatz), aber letztendlich reitest du da ein totes Pferd.
H.Joachim S. schrieb: > Einen vollständigen und fehlerfreien Assembler zu programmieren ist aber > dennoch eine ziemliche Aufgabe - ich möchte das nicht machen Findest du? Mein erstes nicht triviales C Programm war ein 68000 Assembler.
H.Joachim S. schrieb: > letztendlich reitest du da ein totes Pferd. Ist das ist bei Retro-Projekten nicht immer so?
Klar ist das so. Ist ja auch nicht schlimm, im Gegenteil. Aber wozu sollte man sich die Mühe machen, einen Assembler auf dem Zielsystem selbst laufen zu lassen? Dafür ist ein PC besser geeignet. Noch dazu gibts die Software schon, voll funktionsfähig. Da kann man sich lieber Gedanken über die eigentlichen Anwendungsprogramme seines Retros machen. Wenn einem was vernünftiges einfällt...
Frage 348795081542 schrieb: > Gibt es eigentlich Bücher oder Anleitungen wie man einen Assembler > schreiben kann? Es gibt einen mit Source und Doku: https://github.com/tmikov/a51 > ein 8051-System Was für ein 8051 das Original gibt es doch nicht mehr? Und aktuelle 8051 haben das alles an Board und es gibt Leute die alles mögliche in Assembler damit machen z.B. VGA https://www.silabs.com/community/mcu/8-bit/forum.topic.30.10.html/random_latency_with-qfVn
im ULTRAMON für den 8051 ist schon ein One-Pass-Assembler enthalten. Platzbedarf (mit den übrigen Monitorfunktionen): 8 KB. Den SMON für den 6502/6510/C64 mit nur 4 KB toppt wohl keiner.
P.S.: Ein One-Pass-Assembler kann vorwärtsgerichtete Adressrechnung natürlich nicht oder nur eingeschränkt. Es ist eher ein Hilfswerkzeug zum Patchen von Debugobjekten. Auf die Bequemlichkeiten von Intels MCS51 und PLM51 wird man daher trotzdem nicht verzichten wollen. Gerüchteweise gibt es auch 8051-C-Compiler/Assembler von IAR, Keil und Hitech...
Beitrag #5222941 wurde von einem Moderator gelöscht.
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.