FORTH 1: (was Re: (Atmel-) Mikrocontroller: Interrupts und "lange" ISRs

## forwarded copy of: snipped-for-privacy@allinger-307049.user.uni-berlin
## date : 15.08.19
## newsgroup/archive: de.sci.electronics
## user : snipped-for-privacy@spambog.com (Wolfgang Allinger)
wiederfindet :)
Am 15.08.2019 um 13:53 schrieb Wolfgang Allinger:
>> FORTH ist METAsprache, Scriptsprache, HLL und ASM, und zwar alles in
>> einem, so schnell mein Hirn und Finger wollen.
z.B. startup_4712.src, das System hab ich so eingerichtet, dass es beim
Start in einem bestimmten Verzeichnis (START :) nach ner neuen Datei
gesucht hat, wenn es die gefunden hat wurde die einfach interpretiert/
compiliert und die Anlage war wieder auf dem neuesten Stand.
So konnte man Patches oder Versuche einspielen, so dass der Kunde die
hatte konnte er damit arbeiten, wenn er wollte, dann einfach
Wenns nix war, dann per Editor, zB. dem im benutzten FORTH eingebauten
oder einen externen nehmen und startup_xxxx.src verbasteln.
Und warten, bis der eingewiesene Programmierer oder der Allinger ne
angepasste exe lieferte.
FORTH ist halt ein Interpiler und Compreter :) gleichzeitig.
verfummeln oder probieren konnten.
kurzes langatmiges Gesabbel von mir:
Justierung justiert werden sollen, wie geht das? Ich hab denen dann eine
datei geschickt, wo die HLL Definitionen drinstanden. Konnte er dann beim
das als letztes Wort in die update_Typ999 reinfrickeln, oder wenns
dauerhaft bleiben sollte, dann eben \ (Backslash) START einflicken und
dann eben das Kommentarwort "\ " vor Start weg und gut wars.
Alles was FORTH im Eingabestrom (prompt OK ) liest, wird bei einem
verwursten, wenn ja, dann wurde die Zahl auf den STACK gelegt und weiter
geparst, wenn nicht, weil BlaFasel nicht gefunden wurde, kommt ein
Der Outer Interpreter ist einfach die Endlosschleife, die auf Keys wartet.
Mit dem einfachen Wort ":" name bla blu blubber ; wird der Compiler
eingeschaltet und versucht eine neue Definition 'name' zusammenzubringen,
falls der Eingabestrom nur definierte Sachen finden, passiert
of(f)ensichtlich nix, bis das Wort ';' den Compiler wieder ausschaltet und
die Endlosschleife (Outer Interpreter) wieder einschaltet und auf neue
Worte wartet. Sonst kommt halt "blubber" is undefined. Das ist die Colon-
Definition, also der HLL Compiler.
eintippern und das Problem ist hoffentlich behoben.
Dann blubber eintippen und beobachten Was passiert? War nix? Doch lieber
blubber is redifined OK
FORGET blubber
OK
und alles ist wieder sauber.
Ahh ja, und wie ist das kompiliert? Der Compiler setzt ins RAM an die
feddich is die Laube.
gefunden wurde, hampelt der Inner Interpreter eifach die aktuelle Liste
ab. Also eine Liste mit Verweisen auf Listen von Listen... Es wird also
solange die Aufgabe vor sich hergeschoben, bis irgendwann in diesem
Kannste Dir also etwa so vorstellen, wie eine Liste mit CALL 1234 CALL
4567 CALL 8134 ... vobei der CALL niht drinsteht, sondern nur die
Verweisadresse und der Inner Interpreter macht dann die CALLs.
Zack, so einfach ist FORTH.
Ein weiteres wichtiges Wortpaar ist CODE ... END-CODE das macht im Prinzip
Der Anwender wird CODE END-CODE kaum brauchen, das mach dann ggf. ich oder
ein anderer Kenner.
Der Kunde schickt mir nur seine Latte von neuen :- Definitionen und sagt,
funzt alles, aber zu langsam, muss 3x schneller ablaufen. Ich frickel dann
interaktiv raus, wo wie die Zeit verplempert wird und verbessere das oder
schreib das Wort als CODE-Definition. Ist nur ein simples umkodieren, um
schon als gut befunden. Macht die Sache unglaublich einfach. Meist sind
wird halt eine oder mehrere Testschleifen definiert, wo die :- und die
CODE- Definition beide mit den gleichen Parametern aufgerufen und die
Ergebnisse verglichen werden, wenn abweicht, Schleifenabbruch und
Wer bisher durchgehalten hat: BRAVO nun kommt das ENDE bald :)
Auch sonstige Parameter standen in der Startup Datei
zB. Hubweg wurde mit der syntax
12,3 inch als Hubweg
festgelegt. Oh heute cm? kein Problem, dann eben
17,3 cm als Hubweg
eintippern, wg. mir erst mal zur Probe interaktiv, dann per editor in die
Start. Ja alle meine Projekte wurden als META Sprache in den jeweiligen
Anwender eigenen Fachsprache geschrieben, wegen mir auch in seiner
Landesprache. Ist praktisch Bestandteil von (Vollausbau) FORTH. Genauso
wie METAkompiler. Wenn ich die Fachsprache des Kunden kapiert habe, bin
ihm zu seinem Nutzen gelernt und wir reden weniger aneinander vorbei.
WIN-WIN
So nun zum Schluss:
Ich selber hab fast alles unter LMI PCF und F-PC gemacht. Gibs aber nicht
May the FORTH be with you!
Wolfgang
--
Ich bin in Paraguay lebender Trollallergiker :) reply Adresse gesetzt! 

ihr Niveau herunter und schlagen mich dort mit ihrer Erfahrung! :p 
 Click to see the full signature
Reply to
Wolfgang Allinger
Loading thread data ...
Am 15.08.2019 um 23:45 schrieb Wolfgang Allinger:
es um Echtzeit auf einem Mikrocontroller geht, bei dem selbst die
reinrassigen Maschinencode laufen lassen. Bis dahin unterscheidet sich FORTH kaum von BASIC, was die Laufzeit betrifft.
DoDi
Reply to
Hans-Peter Diettrich
Also vermutlich auch eines der am besten optimiertesten.
Deine Argumente sind, zusammenfassend, etwa:
2. Forth ist einfach zu schreiben, weil skriptbar
Das sind beides subjektive und qualitative Argumente. Auf meine Frage im
das nicht testen.
Ich habe vorher noch nie Forth geschrieben aber innerhalb von einer Stunde konnte ich ein Benchmark zusammenstellen. Und ich habe auch den
implementiert und zwar komplett naiv, dem Pseudeocode von Wikipedia folgende.
Dann Gforth, dass du oben empfohlen hast, als Benchmarking verwendet. Resultate hier:
formatting link

Datenstrom Faktor 655. Also im Mittel, sagen wir, Faktor 500 lansgsamer.
MHz clocke und auf dem System B denselben Code von 32 kHz Uhrenquarz laufen lasse. Es sind WELTEN.
nur unbenutzbar. Ich kann das Argument ja gut verstehen, dass du die
Das ist mir schon immer sehr suspekt, wenn jemand nur Vorteile von irgendwas anpreist. Nichts, was mir bekannt ist, hat nur Vorteile. Dann muss man aber halt auch so ehrlich sein und die Nachteile (totale Gurkenperformance) zugeben, sonst ist es einfach nur Unehrlich.
Johannes
Reply to
Johannes Bauer
Am 16.08.2019 um 20:55 schrieb Johannes Bauer:
darauf habe ich ja bereits hingewiesen. Schau mal in eine (embedded)
sowas sicher nicht zu schaffen, nicht nur mangels Dokumentation der Hardware, sondern auch mangels direktem Zugriff darauf. Da hilft sogar ein RT-OS wenig, wenn es um interaktive Programme und ihre Entwicklung geht.
Kommt drauf an, welche Geschwindigkeit die Anwendung erfordert. Typische Controller Programme verbringen ihre Zeit fast nur mit Warten auf Ereignisse, und reagieren dann mit dem Setzen von ein paar Bits der
einem langsamen 8-Bit Mikrocontroller betreiben, da geht auch mit 500000-facher Rechengeschwindigkeit nicht mehr (Takt:100-1000 + Maschinencode:5-500).
Aber wenn wir schon bei der Kritik sind: FORTH Programme sind weitgehend write-only. Wenn ein Entwickler nicht eine saubere Trennlinie zwischen
wurde, dann ist ein Crash vorprogrammiert :-(
Oft liegt es aber einfach in der Natur der Controller. Was verdammt nochmal bedeutet es, wenn das Programm dieses oder jenes Bitmuster in
eines anderen Controllers anders funktioniert.
DoDi
Reply to
Hans-Peter Diettrich
Naja, ich kann halt kein Forth. Und das Wikipedia-Beispielprogramm ist das einzige das ich hatte und es ist auch echt Embedded-tauglich. RC4 ist so klein, dass man ihn einfach runterimplementieren kann.
machen, Testprogramme zu liefern, die weniger Overhead haben (damit man
ich halt wenigstens harte Zahlen, wo vorher nur rumgewiesel war. Jeder ist herzlich eingeladen neue Zahlen zu liefern, aber diese qualitativen Aussagen gehen mir auf den Keks.
digitale Signalverarbeitung gemacht, Multiply/Accumulate, Fixpointarithmetik. Da ist RC4 eigentlich gar nicht weit davon entfernt. Und Krypto mach heutzutage jeder IoT-Controller (das sind allerdings
Hm aber Wolfgang behauptete doch immer, dass das angelich den Compiler schon drin hat, d.h. das wird nicht zur Laufzeit einmal compiliert, sondern immer interpretiert? Das hatte ich anders verstanden.
sagen wir im letzten Jahr wirklich Kopfzerbrechen gemacht haben, das waren allesamt welche bei denen kein Debugger, kein Interpreter-Commandline oder irgendwas mehr hilft, weil das in der
rausgekriegt hab, was das Problem war. Ich glaube Frank Buss hat mir damals geholfen und mich auf den richtigen Trichter gebracht.
Naja, kommt drauf an. Bei einem HMI will ich halt nicht 100ms Warten,
Stimmt.
Neeeh, im Leben nicht. Schrittgenaue Schrittmotorsteuerung, die dann auch noch durch ordertliches (x16) Microstepping schwieriger gemacht wird und bei der die Speed-Ramps ordentlich (Sinus) aussehen ist auf
schnellen (16 MHz AVR) eventuell gerade so, wenn du nicht viel anderes machen musst.
Huh, hartcodierte Memory-Layouts? Lolwut? Wolfgang lobte ja, dass es keinen Linker gibt bei Forth, aber wenn der Programmierer dann von Hand linken muss, ne, das muss echt nicht sein.
Johannes
Reply to
Johannes Bauer
nicht.
Die Anlage wurde dann nochmal in 3facher Ausfertigung gebaut, also 768
Jeder Kanal kam mit 20kHz IFF rein, jeweils 16bit Laufzeit und 8bit
IRs irgendwann asynchron in dem bis 20kHz Grundtakt.
Und nicht ein einziger IR durfte verschlabbert werden.
unterschiedlichen Tiefen, Richtungen und wehe man hat eine Bohrung am Ende der Anlage nicht mit Farbpistolen angespritzt und markiert.
Der Kunde fands auch nicht lustig, wenn die Compuster mal son ganzes Rohr komplett lackiert haben. Fehlersuche war etwas stressig :)
Die Rohre wurden gerne an Rheinmetall geliefert und die mochten absolut keine Farbe auf den Rohren, nur ihr Testrohr musste in der Farbe des Tages
Wolfgang
--
Ich bin in Paraguay lebender Trollallergiker :) reply Adresse gesetzt! 

ihr Niveau herunter und schlagen mich dort mit ihrer Erfahrung! :p 
 Click to see the full signature
Reply to
Wolfgang Allinger
Son gequirlter Quatsch. Im parallelen Posting beschreibe ich zwei Monster
30.000g aus. Auch Flugabwehrraketen werden mit Forth in Echtzeit autonom nachgesteuert. Rechne mal nach, wie genau man da alles erfassen muss, wenn bei Ankunft das programmierte Ende der SW auf 2m+-20cm genau eingehalten werden muss. Ja Luftdruck, Temperatur und noch so ein paar
Es kommst mir so vor, wie ein Oberprimaner, der einer alten Bahnhofnutte
Noch ganz zum Schluss: beim RTX2000 hab ich einen IR Eingang mit 2MHz getriggert und auf einem weiteren mich mich 9600Bd seriell mit dem Kerlchen unterhalten, ohne das man da was von der Grundlast merkte. und das in den 1980ern.
Ah ich vergass, die C166 mussten die Forth engine erst noch beigebogen bekommen. Auch kein Akt.
Wolfgang
--
Ich bin in Paraguay lebender Trollallergiker :) reply Adresse gesetzt! 

ihr Niveau herunter und schlagen mich dort mit ihrer Erfahrung! :p 
 Click to see the full signature
Reply to
Wolfgang Allinger
[...]
[...]
siehst, ist das Programm kompiliert.
Ist nicht wie bei Basic!
Ja auch in FORTH kann man schlechte Programme schreiben, geht sogar viel schneller.
Schuld. Und wer keine klare Trennung zwischen HW und Anwendung hinkriegt,
Motherboard ausgewechselt, ohne dass die 2 anderen Programmierer irgendwas
oder gar Probleme hatten. Ausser dass das ganze dann viel schneller lief.
Ich hab den Kern und die IR angepasst und gut wars.
Forth hat keinen Linker und braucht auch keinen. Ein Riesen Vorteil.
Wolfgang
--
Ich bin in Paraguay lebender Trollallergiker :) reply Adresse gesetzt! 

ihr Niveau herunter und schlagen mich dort mit ihrer Erfahrung! :p 
 Click to see the full signature
Reply to
Wolfgang Allinger
vielleicht 5 Minuten, ein "hello world" in C braucht 10. Go waren auch
ist.
Auch wenn du die RPN gut findest, mir stellen sich die Nackenhaare auf
Okay, dann hat sogar "kompiliertes" Forth eine Performance-Penalty
Ja sehr einsteigerfreundlich, wenn man erstmal den Compiler/Interpreter auf das Target portieren muss.
Ohne Linker ist offenbar 500 Mal besser als mit.
Johannes
Reply to
Johannes Bauer
LOL ich habe *gemessen*. Wenn du objektive Zahlen nichts entgegenzusetzen hast, hast du das Argument in dem Bereich verloren.
Behauptungen sind krude, dann zeig doch mal Messungen von angeblichem
Dann ist es nur Geschwurbel.
Butter bei die Fische! Zeigen, nicht Labern. Zeig doch mal wie performant das sein kann. Der Faktor 500 ist jetzt schonmal eine Zahl,
Kann durchaus sein, dass in irgendwelchen Spezialanwendungen Hardware gebaut wurde, die das performant interpretiert. Aber auf einem
Anekdoten keinerlei Evidenz liefern kann oder will. Und dann ins
Also deine Behauptung und neuerliche Anekdote ist, dass du eine Interruptfrequenz von 2 MHz in den 80ern so "nebenbei" hattest? Das ist schlicht und ergreifend gelogen und wenn du nur halb der Ingenieur
durchschaut. Rechne mal bei einen minimalen ISR (nicht in Hardware
Instruktionen, um was sinnvolles zu machen durch.
Johannes
Reply to
Johannes Bauer
Am 17.08.2019 um 08:27 schrieb Johannes Bauer:
immer gleiche FORTH Code. Ich habe heute noch den Karteikasten mit den Implementierungen der Worte zu meinem Lieblingsforth.
ist schon passiert.
DoDi
Reply to
Hans-Peter Diettrich
Am 17.08.2019 um 05:34 schrieb Wolfgang Allinger:
viel bringt, wenn dort ein VARIANT Datentyp verwendet wird - siehe VisualBasic.
FORTH erlaubt Compilierung bei der Eingabe, was aber nicht Compilierung in Maschinencode bedeutet, und auch nicht unbedingt in anderweitig
IMMEDIATE Mode (bei der Eingabe) normal abgespeichert wird, aber direkt weiteren FORTH Code erzeugt, wenn es in der abgespeicherten Version
Parser wird ja von FORTH geliefert.
Schau Dir mal die Stack-Beschreibung an, die zu jedem Wort angegeben
so ein Mechanismus nicht bekannt.
Ich habe mir seinerzeit etliche Bibliotheken angeschaut, die ohne
es so eine Dokumentation, aber wenn die nicht auf den Disketten mitgeliefert wurde, war man in der Zeit vor dem Internet mit dem Quelltext alleine einfach nur aufgeschmissen :-(
DoDi
Reply to
Hans-Peter Diettrich
Da war die Arithmetik aber sicher nicht mit den FORTH Primitives
HMI?
Schlechtes Beispiel, wenn das Entprellen eines Knopfes schon 10-20ms kostet, egal wie schnell der Prozessor oder die Programmiersprache ist. Und auf Interrupts kann man auch in FORTH direkt reagieren, wieso nicht?
man das so machen? Motortreiber braucht man sowieso, und die gibt es passend mit Microstepping, Strombegrenzung etc.
DoDi
Reply to
Hans-Peter Diettrich
Johannes Bauer :
entgegennimmt, im Fehlerfall ein Standard-THROW exekutiert, als ABORT, womit alle Schachtelungen aufgehoben werden und der Text-Interpreter wieder neu beginnt.
INCLUDED nimmt Text aus einer zeilenorientierten Datei entgegen. THRU macht
mit einer Zeile, die als String-Parameter gegeben wird.
Eine Schicht darunter wird man eher von Code reden, da nicht mehr Textfolgen abgearbeitet werden, sondern kompilierte Folgen im Speicher. Dass dennoch das Wort Interpreter ins Spiel kommt, liegt daran, dass die Modelle, wie
zu der Zeit etwa bis MItte der 1990er, dem kundigen Nutzer das mitzuteilen, wie die Schacthelung von Code im Speicher organisiert ist.
Nunmehr ist der kundige Nutzer auch nurmehr ein braver Konsument und fragt nicht mehr nach so etwas, bzw. ist eher irritiert.
die das korrespondiert, dass der Code aus einer Abfolge von Tokens besteht. Und die Tokens, wenn sie zur Abarbeitung angesprungen werden, sind dann wiederum Abfolgen von Tokens.
Erst die unterste Schicht von Tokens sind dann in Assembler kodiert.
Noch in den Forth-79 und -83 wurde das fein kultiviert, mitzuteilen, auf welche Art die Tokens angesprungen wurden. Im kompaktesten Fall besteht selbst noch der Beginn eines Tokens aus einem Verweis auf ein Token, dem die Kette der folgenden Tokens mitgeteilt wird, und startet den Mechanismus des Schachtelns und Weiterschaltens (typischerweise ein kleines Code-Schnipsel, mit dem Namen NEXT).
Das ist die kompakteste und dann auch zugleich langsamste Form, wie der Code
Hardware-Architektur vor sich hat, wo der letztliche Assmember strikt
implementieren. Die kann dann, mit ein wenig Forth-Assembler-Code im ROM, rein vom RAM laufen.
minimale Forth-Assembler im ROM als Maschinen-Monitor dient, mittels dem per ad hoc dazukompilierten Routinen die Maschine auf ihr Befinden hin abfragt
Stadium weg am Objekt selbst modellieren kann, ohne dass man eine Emulation
Wenn der Zeittakt der Umgebung aber eher in Sekunden misst, ohne Milli oder Mikro, dann braucht es keinen weiteren Luxus zur Beschleunigung.
die kleinen Prozessoren dann im emulierten ROM per Assembler-kompiliertem Forth.
Letzteres ist dan schon die dritte Variante des Interpretierens von Assembler-Code auf Maschinenebene, indem eben der Compiler alles, was im
schlau mit dem Code zuvor und danach verkettet. Es muss ja weiterhin die
Verschachtelung erreicht werden.
Tokens nicht selbst wiederum einen Zeiger auf das Token verweist, mit dem Verschachtelung und Weiterschalten im Code organisiert ist, sondern diese kleine Standard-Routine steht dann in Assembler zu Beginn von jedem Token.
wird. Oder auch nicht. Aus letzterem wird zwar auch eine lustige Maschine, aber viel machen kann man damit nicht wirklich, oder nur bei ausnehmend
***
wird angenommen dass jemand der mit dieser Maschine arbeitet, genug
Routinen auf, und deren Schnittstellen sollten dann doch wohl auch weiterhin stabil bleiben. Wer dann nachher an den Schnittstellen herumdreht, bzw. das dann nicht im Griff hat, wenn er es trotzden macht, dem ist dann wohl nicht zu helfen. Es gibt da keinen reichen Onkel, als wie ein solcher sich die
locker dahin.
kompiliertem Code nicht entwickelt. Das ist keine Frage des Systems sondern der Historie. Man kann das auch in Fortg einbauen, dass es kompilierten Code
Das Modell des Open-Boot-Systems hat dann die Tokens normiert ... was ebenso
mit dem Handling von APDUs im Mittelpunkt, wie mit der ISO 7816 begonnen,
Wenn dann Folgen von Tokens ausgetauscht werden, ist man bereits auf
Und das ist dann schon die Schicht, wie Libraries gestrickt sind.
abklopfen, was denn gemeint ist, wenn Libraries ausgetauscht werden. Die Architekturen sind weniger technisch als auch historisch bedingt.
Wenn es darum ginge, sich des Mainstreams zu bedienen, wo massenweise die
in Forth eine harte Klippe, das ist die Konstruktion des Aufbaus mit
Auch das ist wohl nur historisch bedingt - wahrscheinlich auf die
das Personal zu seiner Zeit etwas stringenter in analytischen Dimensionen
bedingten Erfordernisse viel naheliegender.
Der Vorteil, den Forth in dieser Hinsicht hat, ist immens, als da Verschachtelungen viel bililiger zu haben sind, wenn nicht bei jedem Sprung im Code zugleich der Zusanmenhang der Daten zwuschengesichert werden muss. Das erspart man sich, wenn die Parameter transparent auf einem gemeinsamen Stack durchgereicht werden. Von daher wurde typischerweise in Forth stets mit kleinen Routinen kodiert, mit den anonymen Parametern auf dem Stack.
parallel dazu, dass Unix-Maschinen sich verbreiteten. C verbreitete sich erst einmal ganz spezifisch mit letzteren - aber auch ist hier die Tradition aufrecht geblieben, dass, auch in C, Quelltexte korrespondiert werden, es
Das Interesse, dass nur kompilierte Libraries im Umlauf sind, ist eher
uneinsehbaren kryptischen Datenhaufen in Plastik zu verpacken und teuer
Normierung auskungelte, von allzu konkreten Implementierungsdetails Abschied zu nehmen und abstraktere Prinzipien stattdessen aufzunehmen, sodass unter
Reply to
Ewald Pfau
Ist eben genau ein gutes Beispiel: Das Entprellen dauert schon die
auch schon eher 50-75ms ansetzen. Und dann willst du dem Benutzer *sofort* signalisieren, was passiert ist.
Wenn du da ein LCD oder sowas dran hast, das bissl mehr braucht als nur GPIO LED an/aus, dann merkst du das sehrwohl. Und es gibt genug
langsam, 16 MHz als schnell und 48 MHz als superschnell bezeichnen.
Motortreiber mit Microstepping machen aber halt nur das, was der Name
dieselbe Geschwindigkeit.
angeflanscht direkt an den Stepper und der nimmt z.B. via RS232 Kommandos entgegen, die ihn wie einen Servo aussehen lassen).
Johannes
Reply to
Johannes Bauer
Hello World dauert in FORTH nur solange, wie man tippen muss :p
OK> : Hello ." Hello World, hello Johannes" ; Hello
Quatsch mit Sosse, auf neuen Kern anpassen (1-3d Manntage) muss man nur, wenn man FORTH auf einen neuen Processor bringen will und man im Netz
FORTH Programme laufen lassen, die mit Standard I/O auskommen. Mach das mal in einer anderen Sprache oder versuch mal andere Interpreter auf eine
es kein FORTH gibt, die eine waren die Ur-PICs, und dann war da noch
mit der Art des Speicherzugriffs (Harvard Ecke?).
Als grobe Faustformeln:
1. Eine FORTH Anwendung oberhalb des Kernels braucht nur 1/10 des Platzes
passte in 2kB.
2. FORTH Geschwindigkeit liegt auf der Scala ASM = 1 und Basic = 100, etwa bei 10. Mit Gewalt auch weit niedriger, bis an
Reply to
Wolfgang Allinger
Keine Ahnung, was Du da mit RC4 gemacht hast, hab weder Zeit noch Lust das nachzugroffeln.
aus?
Wenn FORTH fertig mit dem Lesen einer Quelle ist, ist wenige
rumdrehen!
Ich hab ja nicht gesagt, dass die 2MHz was besonders sinnvolles gemacht
incrementieren 100ns. In diesen 100ns konnte der bis zu 4 (5?) Befehle
SW!
und Physikern :p
Und tut mir leid, dass der RTX2000 keinen Assembler als Maschinencode hat. Nur FORTH :p Er besteht IIRC aus etwas mehr als 4.000 Gattern. Der
auch egal, die RTX2000 waren ja schon mal ne Hausnummer.
Mercedes, hatten einen MARC 4 (4!!! bit FORTH Processor) von Temic (ex Telefunken) drin. Nein, MERCEDES hat das nicht besonders geschickt und vorbildlich implementiert, sitzen auf zu hohem Ross :) Einer der MIL Wegwerfartikel hatte auch nen MARC4 drin, im Gegensatz zu
Desterwegen sind die Dinger inzwischen auch sehr rar geworden.
(armer Johannes), sowie mit Video und Radar im Kopf gesteuert wurden. Anfangsbeschleunigung umme 30.000g :o Und ich glaube nicht, dass das eine langsame Anwendung war :p Oder die FORTH wegen Lahmheit genommen haben.
Es wurde seinerzeit gemunkelt, dass die Patriots auch mit RTX2000 flogen,
Hard). Hab da mal die restlichen 10 aus meinem Handlager gut versilbert :)
Die Honks bei Harris haben alle Entwickler gefeuert und wollten so richtig Absahnen, als dann der Nachschub klemmte, und die Entwickler in aller Welt
noch gibt. Gier frisst Hirn!
selber gemacht um das auch mal probiert zu haben. Wieviel C Kerne hast Du schon geschrieben?
nicht verstanden?
Wolfgang
--
Ich bin in Paraguay lebender Trollallergiker :) reply Adresse gesetzt! 

ihr Niveau herunter und schlagen mich dort mit ihrer Erfahrung! :p 
 Click to see the full signature
Reply to
Wolfgang Allinger
Nein, BASIC interpretiert immer wieder, erst ein BASCOM setzt das als (p-
Bei FORTH die sog. META Compiler.
Das eine sind die COLON (HLL) Definitionen, das andere die CODE (ASM) Teile.
So isset, ein Beispiel, u.a. mit IMMEDIATE unten dran gepappt.
Und wem das nicht reicht, es gibt auch noch CREATE DOES> , was Unterschiede zur Compile und zur Laufzeit macht. Hab ich u.a. gerne
sind elegant mit CREATE DOES> .
Kann mir auch keinen Reim drauf machen.
Wenn irgendwer halt ne andere Reihenfolge oder Menge braucht, soll er hat ein neues Wort definieren, dann crasht nix.
Doof ist allerdings, wer die Warnung "... is redifined" in den Wind
sofort sichtbar.
Ich hab nie behauptet, dass alle FORTH Programme oder Programmierer gut
Das Dicke Ende, also das interessanteste ist der Abschluss mit "Feueralarm_bearbeiten", siehe ziemlich letzter Abschnitt.
----x8---
\ FEUER Demo FEUERMELDER Anwendung ALL 11:26 14MAY93 \ Last changed screen # 000 ALL 11:26 14MAY93
\ (C) 1993 by Dipl.-Ing. Wolfgang Allinger 'ALL0593' \ c/o Ingenieurbuero Allinger \ Brander Weg 6 Tel/FAX: (+49)+212/66811 \ D-42699 Solingen Germany \ noncommercial use granted !!!
\ selbstdokumentierende Sprache am Beispiel eines FEUERMELDER \ aussieht. Hinweis: alles in "( )" und nach "\" ist Kommentar. \ ":" ... ";" sind neue Definitionen. \ "Feueralarm?" und "Feueralarm_bearbeiten" sind 2!! Programme. \ Diese Demo belegt weniger als 700 byte Programmspeicher und
\ HISTORY MASTER LOAD SCREEN ALL 11:19 14MAY93
DECIMAL \ default base
000 CONSTANT $VFEUER \ Version Kontrolle
: -FEUER FORGET $VFEUER ; \ entfernt dieses Programm wieder
2 ?SCREENS THRU \ 1 LOAD l"dt dann die Anwendungsbl"cke \ bei SEQ file system auskommentieren !
\ ALL0593 v0.00 first release
\ .VFEUER ... constants ... USER Interface ALL 10:16 14MAY93
: .VFEUER $VFEUER CR . ; \ zeige Versionsnr.
-1 CONSTANT ja
VARIABLE Meldung \ bits gesetzt wenns qualmt, n. Zeile setzt 5 Meldung ! \ zB: bit0 = Melder1, bit2 = Melder3 : Melder@ ( a -- u ) @ ; \ liefert Datum aus Adresse Meldung CONSTANT Melder0 \ liefert Adresse der 1. Meldung
16 CONSTANT bits/Meldung \ zB 16bit oder was auch immer 16 CONSTANT alle \ Anzahl Melder
VARIABLE Rauchmelder \ 1 ... n
: abfragen ( a -- uMASKE uDATA )
@ 1- bits/Meldung /MOD ( -- rem qot ) Melder0 + Melder@ ( -- rem uDATA ) 1 ROT ( -- uDATA 1 rem ) SHIFT ( -- uDATA uMASKE ) \ rem -> MASKE SWAP ; ( -- uMASKE uDATA )
: entdeckt? ( uMASKE uDATA -- t=RAUCH) AND 0> ;
: Feueralarm ( -- ^string nMelder )
" Rauch an Melder Nr.: " ( -- ^string ) Rauchmelder @ ;
: melden ( ^string n -- ) CR SWAP COUNT TYPE . 7 EMIT ;
: abgefragt? ( n a -- ? ) @ 1-
Reply to
Wolfgang Allinger
[...]
Wolfgang
--
Ich bin in Paraguay lebender Trollallergiker :) reply Adresse gesetzt! 

ihr Niveau herunter und schlagen mich dort mit ihrer Erfahrung! :p 
 Click to see the full signature
Reply to
Wolfgang Allinger
Harte Fakten werden nicht gemocht, weil sie alle 'Optionen' ersticken.
Ich habe auch mal einen Test gemacht, auf ein und derselben Plattform, mit gleichen Mitteln und Aufgaben auf Software-Ebene.
Ergebnisse des jeweiligen Zeitbedarfs (1996): C 1 Pascal 5 COBOL 80
C ist nicht zu toppen! Das bewahrheitet sich immer wieder.
--
Helmut Schellong   var@schellong.biz 
www.schellong.de   www.schellong.com   www.schellong.biz 
 Click to see the full signature
Reply to
Helmut Schellong

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.