Grundlagen und BASIC/Assembler

Der MSX Computer ist ein Vertreter der "OK"-Computer, neben BBC Micro, Sinclair Spectrum, Commodore 64, Amstrad 464 und die ganzen "Homecomputer" aus den 80ziger Jahren.
Ein "OK"-Computer ist ein "okey… I am ready for you, my friend. Tell me what to rock! -computer.
auf deutsch: "Kumpel, bin bereit. Sag mir was ich tun soll" 

 
 
Wird so ein Computer eingeschaltet, dann signalisiert es dem Benutzer recht zügig seine Bereitschaft Befehle entgegen zu nehmen. Dies macht der Computer mit einem Bereitsschaftszeichen, welcher er auf dem primären Ausgabegerät - dem Ferneher oder Monitor ausgibt. Dieses Bereitschaftszeichen nennt sich "prompt". Das kommt aus dem englischen "to prompt uppon something": Auf etwas warten, literaler ausgedrückt wohl: Eingabeaufforderung.
In der heutigen Zeit ist der "prompt" relativ unsichtbar. Man sieht ein recht aufwendig gemaltes Bild und einen Mauszeiger. Mit diesem Mauszeiger und dessen Tasten signalisiert man einem Computer welche Funktion er ausführen soll. Sei es ein Programm starten oder Bildelemente zusammenzufassen, auf die im späteren Schritt wiederum eine Anweisung mittels einer Mausgestik erhält und diese ausführt. Das nennt sich GUI (grafical user interface) –> grafische Benutzer-Computer Schnittstelle –> uns bekannt als der "Windows Desktop".
 
Der Zugang zum Interagieren mit dem Computersystem ist also ein geschaffenes Programm welches den Benutzer in irgendeiner Art und Weise nach Eingaben frägt, diese Eingaben entgegen nimmt und entsprechend dieser zugrundeliegende Funktionen ausführt. 
 
Die Kommunikation mit dem Computer war vor der Zeit der Heimcomputer Spezialisten vorbehalten, die z.B. mit meterlangen Lochstreifen aus Papier Informationen in ein Computer gebracht haben. Die Ausgabe eines solchen Computers war ebenso in Form von einem "gestanzten" Lochstreifen aus Papier. Später gab es dann Lochkarten, die etwas kompakter waren, jedoch dem selben Prinzip folgten. Also ziemlich aufwendig und nur wenigen Leuten zugänglich. 
 
Durch die Entwicklung von weiteren Peripheriegeräten wie einem Bildschirm, oder einer Tastatur gab es langsam die Möglichkeit "visuell" Informationen von einem Computer zu erhalten und Information über eine Tastatur hinein zu schreiben. (Es gab noch einen Vorläufer von der Tastatur in Form von kleinen Tastern und Schaltern die allesamt geschaltet und gedrückt werden mußten, damit entsprechende computer codes in den Computer geschrieben wurden.) 
 
Neben der tatsächlichen Aufgabe eines Computers wie z.B. etwas auszurechnen wurden prinzipiell zuvor ähnliche Aufgaben durchgeführt. Diese waren zumeist ein Programm laden, Ergebnisse ausgeben, Ein Programm parametrisieren - also irgendwelche Umgebungswerte zu definieren, die die Berechnung eines Ergebnisses in einer gewünschten, sinnigen Form beeinflussten und letztendes auch ein Programm zu speichern. All diese Teilaufgaben sind immer wieder mit gleichen Instruktionen und den darunterliegenden notwendigen codes durchgeführt worden. codes sind irgendwelche Muster, die elektrisch einen Strom erzeugen oder auch nicht.
 
Selbst innerhalb eines Programms, welches eine Aufgabe löste, fand man mehr oder weniger ähnliche Abläufe. Z.B. eine Funktion mehrmals durchzuführen, oder zu aufgrund einer Prüfung einen weiteren Lösungs(berechnungs)weg einzuschlagen. Das waren die Vorläufer von sogenannten Programmsteuerbefehlen. Diese beeinflussen den Weg für ein Programm Lösungen zu berechnen. 
Man überlegte sich wie man verbaler eine Problemlösung dem Computer verständlich machen kann, als jede Instruktion(Anweisung) auf das zu Lösende Problem hinzu-schneidern. Etwas generelles, bzw. universelleres mußte her.
 
Die Lösung war Schlüsselworte zu definieren die verschiedene Instruktionen zusammenfassten. Die Kombination aus diesen Schlüsselworte brachte die ersehnte Flexibilität. Die Schlüsselworte auf englisch sind "Symbols". Symbole. Und die zugrunde liegenden Instruktionen sind "Instructions". Und da dadurch flexibel verschiedenartige Problemlösungen formuliert werden konnte nannte man das auf englisch All Purpose (für jeden Zweck "kombinierbar"). 
 
Die Aneinanderreihung dieser Begriffe wie Symbol, Instructions, All Purpose waren die Hauptbestandteile der Abkürzung: B A S I C. Nämlich A-all_purpose S-symbol I-instructions C-code. Also all purpose symbol instruction code. –> Rock 'n Roll!! Das ist ASIC. Und woher kommt das B?
 
Tja…. das ist so eine Marketing-Sache. Ursprünglich war die Programmierung (in welcher Art auch immer) immer Spezialisten vorbehalten. Da man nun auch "Fachfremde", deren "fachspezifische" Problemlösung formulieren lassen konnte und diese mit dem Thema Computer als Anfänger galten und die meisten sich wohl dagegen sträubten, warben Marketing Leute mit: Das können sogar Anfänger. Und das ist das B und bedeutet im englischen wie auch im deutschen: Beginner / Anfänger. Und das ist BASIC (beginner all purpose symbol instruction code)
 

Und wo ist die Abgrenzung zu Assembler?

Im oberen Teil der Ausführungen gibt es einen kleinen Satz, der die für den Computer notwendige codes anspricht. Die Codes, lebendig durch Stromfluss und kein Stromfluss, die elektrischen Zustände beeinflussen, die durch die physikalische Anordnung von Transistoren, am anderen Ende irgendwo weitere sinnige Stromfluss/keinStrom-Fluss-Kombinationen ergeben und diese sinnige Information sogar weitere Elektronik eine Zahl 5 auf einem Bildschirm darzustellen lassen - das sind sogenannte OP CODES. Operational Codes. (Ganz nebenbei und leise: Das hier ist die Grenze zwischen Hardware und Software. Hardware die physikalische Anordnung von elektronischen Bauelemente. Und Software ist die aufgrund einer Kombination von Stromzustände weitere sinnige Kombinationen erzeugt). 
Aber beim Thema… die OP CODES sind menschlich ebenso "erschwert" handzuhaben. Also hat man für "alle" dieser CODES entsprechende Abkürzungen definiert. Analog zu den Symbolen bzgl. Funktionen für die BASIC Befehle. Diese Abkürzungen adressieren exakt immer einen OP Code (ok… manche Prozessoren agreggieren auch mehrere OP Codes in eine Abkürzung). 
 
Diese Abkürzungen werden als "Mnemonic" bezeichnet. (merkbare Abkürzung - memorizable). Also auch hier haben "Spezialisten" sich eine Art programmiersprache durch die Einführung von Abkürzungen geschaffen. Diese Sprache heisst Assembler. Auf deutsch: Zusammenbauer. Diese Programmiersprache nimmt die ABkürzungen die ein Spezialist getippt hat und setzt nur die entsprechenden OP CODES in den Computer Speicher. Und die Speicher sind nichts anderes wie die physikalische Anordnung von Transistoren die aufgrund der Kombination der Strom-Zustände weitere Kombinationen erzeugen. 
 
Also haben wir nur durch die Abgrenzung von BASIC zu Assembler sogar gelernt, wo die Grenze zwischen Software und Hardware ist. 
 
Man merkt, wenn man von weiter oben diese Sachverhalte betrachtet, dass die Befehle von BASIC nur darunterliegende Instruktionen, bzw. deren OPCodes zusammenfassen. Weil diese "grobe" Zusammenfassungen tatsächlich ausreichend sind um von Computertechnik entfernte fachspezifische Probleme zu lösen, ist dies durchaus ein probates Werkzeug.
 
Dass der Computer durch die Verwendung von BASIC Befehlen, nicht nur mit der Problemlösung beschäftigt ist, sondern auch mit dem Verstehen welche Kombinationen mittels BASIC Befehlen eingegeben worden sind, und welche darunter liegenden Instruktionen dazu abgearbeitet werden müssen, sich letzenendes auf die Ausführungsgeschwindigkeit* auswirkt - ist nachvollziehbar. Daher wird bei Geschwindigkeits-kritischen Anwendungen auf den Comfort von BASIC verzichtet und und direkt die OPCodes/Instruktionen in den Speicher geschrieben - eben dennoch mit Hilfe eines Werkzeugs - dem Zusammensetzer - dem Assembler.
 
Noch ein kleiner Vermerk zum Begriff Ausführungsgeschwindigeit. Die Geschwindigkeit, wie ein Computer arbeitet, ist immer gleich. Egal welche Programmiersprache genutzt worden ist. Der zeitliche Unterschied der als Maßstab genutzt wird, zu behaupten was eine schnelle Sprache (bessere?) ist, ist eher da zu suchen, wie viel ein Computer in seiner "konstanten" Geschwindigkeit an "mehrarbeit" hat um entsprechende Opcodes letztenendes auszuführen, oder ob er diese bereits "Verarbeitungs-gerecht" vorfindet. 
 
Achso… OP Codes werden auch als Maschinencode bezeichnet. Daher ist das Produkt eines Assembler als Programmiersprache, bzw. "OP Codes Setzer" der Maschinencode. Und das ist die tatsächliche Maschinensprache.
Es ist also ein Unterschied ob jemand in Assembler programmiert oder in Maschinensprache. Letztere kitzeln direkt die Transistoren. Erstere lassen kitzelige Federn in irgendwelche Speicherlöcher vom Zusammenleger (assembler) legen. :_) 
In diesem Sinne.

Eine Sache noch....das Betriebssystem

Was interessant ist ist folgender Sachverhalt. Ganz oben wird man von BASIC "geprompted". Die OK-Computer Sache meine ich. 
Wir haben aber auch gelernt dass BASIC eine Programmiersprache ist.
Das bedeutet dass die OK-Computer BASIC als Betriebssystem haben wie wir heutzutage Windows. In BASIC gibt es Befehle die sofort eine Diskette formatieren, eine Datei kopieren oder löschen. Im Gegensatz dazu müssen wir bei Windows separate Programme starten, um z.B. Programme zu schreiben oder Dateien zu kopieren. BASIC lässt das direkt mit sich machen. Das liegt daran, dass die BASIC Befehle einmal "interaktiv" eingegeben werden können - also direkt rein und los gehts. Oder man gibt diese als Liste von Befehle, die letztendes - wenn gespeichert - als BASIC Programm bezeichnet ein. Und läßt diese Liste direkt (und mehrmals) abarbeiten. 
Die zugrunde liegenden Befehle, oder noch tiefer (jetzt können wir es ja) die notwendigen Abkürzungen/Befehle zusammengefasst ist das Betriebssystem.