Software-Emitting
Der programmierte Erfolg

Sinclair ZX81

                             Sinclair ZX81

Der Sinclair ZX81 war der erste erschwingliche Homecomputer der Geschichte. Seinen größten Durchbruch hatte er in England, wo er auch entwickelt worden war. Sir Clive Sinclair baute ihn in der Firma Sinclair. In Deutschland kostete er rund 100 DM.
Der Vorgänger des ZX81 war der ZX80. Der ZX80 war weniger erfolgreich und ist deswegen sehr selten.

Der Sinclair ZX81:





Der Aufbau ist recht simpel, mit grad mal 4 Chips.
Es gab zwei Versionen, die eine Hatte 2 RAM-Chips,
Die andere hatte 1 RAM-Chip.

Der ZX81 hat ausserdem noch eine CPU mit dem Namen:
Zilog Nec Z80A @ 3.25 MHz

Dann besaß der ZX81 auch noch einen Chip mit dem Namen ULA.
UncommittedLogicArray = Festgeschriebenes logisches Feld

Programmiert wurde der ZX81 mit BASIC, der damals am weitesten verbreitetste Programmiersprache der Welt. Das BASIC war im 
8Kb großen ROM.

Der RAM war sehr klein : 1Kb
Maximal erweiterbar auf 56Kb( 8 Kb brauchte das BASIC ) und damit den Commodore 64 überboten.

Die Platine:




Spiele konnten wegen des fehlenden Video Chips nur in Schwarz-Weiß angezeigt werden.
Der Zeichensatz des ZX81´s:




Doch es gab Programmierer, die wirklich gute Programme geschrieben haben. Z.Bsp: ZX Forth : eine Programmiersprache für den ZX81.

Um weitere Spiele und Programme zu sehen und zu spielen, bitte auf die Website : www.zx81stuff.org.uk
Die Website des ZX Teams: www.zx81.de





ZX-Forth 

Hier widme ich mich ein wenig der Programmiersprache ZX-Forth (BASIC ist ausführlich im Handbuch erklärt).
ZX Forth ist eine Version des FIG Forth und wurde 1982 von Artic veröffentlicht. Der Witz ist, dass das Programm damals schon einige Fehler hatte. Beispielsweise hängte sich das Programm durch Drücken der Shift+5 ( 6 7 8 ) und dann Enter Tasten komplett auf. Oder auch einfach mal so. Das war halt noch üblich. Leider flackert der Bildschirm bei jeder Eingabe. Aber es gibt Neuerungen. Beispielsweise Toddy Forth oder auch eine neue Version des ZX Forth. 

Ich will hier nur kurz eine kleine Forth Einführung machen. 

Arithmetik 
Also Forth ist anders als andere Programmiersprachen, denn in Forth wird jede Rechenaufgabe durch UPN (umgekehrte polnische Notation) eingegeben. Das mal an einem einfachen Beispiel. 

Normalerweise geben wir beim ZX81 in BASIC zum Rechnen folgendes ein: 
PRINT (5+2) * (4+3) 
Er würde nun 49 ausgeben. 
In Forth sieht das alles ganz anders aus. Da Forth einen Stack hat, der manipuliert wird, müssen wir über den Stack rechnen. Und zwar so:
5 2 + 4 3 + * .     <N/L>    49 OK
das würde der Computer dann ausgeben. Versuchen sie einfach mal zum Spaß folgende Rechnungen
(38+32)*((98+3)*2)
82 / 5 
9*2+(29*8)

Stackmanipulation

Um den Stack zu manipulieren, bringt Forth schon Befehle mit, damit sie es leichter haben, mit Zahlen zu rechnen. 
Ich habe hier mal ein Beispiel. 
9 DUP ---> Dubliziert die Zahl vorher. also antstatt 9 steht jetzt 9 9 dort. 
Mit dem Punkt können sie es ausgeben. 
8 3 SWAP ---> Dreht die Zahlen um ( 8 3 --- 3 8 )
2 DROP ---> Löscht die Zahl 
8 2 1 ROT ---> Dreht den Stack einmal um. ( 8 2 1 --- 2 1 8 )
1 4 OVER ---> Setzt die an der zweiten Stelle stehende Zahl auf den obersten Stack ( 1 4 ---- 1 4 1 )

Programme

Um in Forth Programme  zu schreiben, brauchen sie keine einzigen Zahlen. Sie müssen ein Programm oder ein Teil des Programms in Buchstaben fassen. 
: HALLO ( der Doppelpunkt sagt an, dass HALLO der Name des Programms ist)
Hier mal ein einfaches Beispielprogramm 
: HALLO CR ." Hallo " CR ;             \ Das Semikolon sagt an, dass die Definition zu Ende ist 

Variablen 

Variablen und Konstanten definiert man sehr einfach.
VARIABLE und CONSTANT sind die Kommandos dafür. 
Als erstes mal ganz einfach eine Variable anlegen die den Wert 42 enthält.
42 VARIABLE X
Unser X hat nun die Zahl 42. Nun versuchen sie einfach mal X abzurufen. Wenn sie nun in Forth X . eingeben, erhalten sie folgendes (bei mir):
X . 25450 OK 
Das hat damit zu tun, dass Forth die Variablen an einer Speicherstelle einlegt, bis sie gebraucht werden. Problematisch? nein. Wir können den Wert ohne Probleme abrufen. Und das ist ganz einfach:
X @ . 42 OK 
durch das @ gibt der Computer ihnen die Zahl wieder aus. 
Doch wie können wir die Variable nun verändern? 
Das ist auch recht einfach. Wir wollen nun eine 43 in X laden. 
43 X ! OK
Das wars. 43 mehr nicht. 

CONSTANT ist bis auf die Abfrage identisch und sie können keine Werte verändern. 
314 CONSTANT PI OK
PI . 314 OK

Nachtrag:
Das @ und das ! erhalten sie durch @ = SHIFT + Q und ! = SHIFT + W ( Sie sehen anders aus )



DO LOOP 

DO LOOP sind Schleifen in Forth. Diese sind eigentlich ganz einfach:
X Y DO LOOP. X ist der Startwert ( DO LOOP zählt aber bloß bis X-1)
Ein einfaches Beispiel:
: HALLO 1 DO ." Hallo " LOOP ; 
Wenn sie nun 29 HALLO eingeben, wird ihnen 28 mal Hallo auf den Bildschirm gedruckt. 
Was ist aber nun, wenn sie die Werte der Schleife sehen wollen?
Sie geben einfach I ein. 
: Schleife 1 DO I . LOOP ;
Wenn sie nun 10 Schleife eingeben, passiert das:

10 SCHLEIFE 1 2 3 4 5 6 7 8 9 OK 

Einfach? Wenn sie nun aber noch FOR I=x TO y STEP n machen wollen, brauchen sie +LOOP. 
Dafür einfach in der Bedingung angeben, wie weit der Counter dann springen soll. Immer in 2er Schritten wäre dann 2 +LOOP und in 3er Schritten immer 3 +LOOP. 
: SCHLEIFE 100 2 DO I . 2 +LOOP ; gibt nun alle Zahlen bis 100 aus, die gerade sind. So einfach ists. 

Bedingungen
Was wäre eine Programmiersprache ohne Bedingungen?
In Forth ist nach der Polnischen Notation alles umgekehrt, um also eine Abfrage zu machen, einfach IF und am Ende THEN eingebn. 
: TEST 10 < IF ." KLEINER " THEN ;
So gehts. 

Programme

Hier ein paar nützliche Programme. 
Ein Counter sehe so aus:
: COUNT BEGIN DUP . DUP 1 - DUP 0= UNTIL ;

Ein endloses Programm, was bis unendlich zählen würde (oder bis der Stack voll ist):
: ENDLESS 1 BEGIN DUP . DUP 1+ AGAIN ;

Ein Programm, was Fakultäten berechnet ( ) <- Kommentare

1 VARIABLE FAK
: FKT 
   1 FAK ! ( FAK auf 1 setzen )
   1+ 1 DO ( eins hochrechnen )
      I FAK @ * FAK ! ( I mit FAK multiplizieren und wieder in FAK zurückschreiben )
   LOOP 
   FAK @ . ( FAK ausgeben )
;
Das wars mit einer kleinen Einführung. Wenn Fragen bestehen, mailen sie einfach. 
 






Kommentar zu dieser Seite hinzufügen:
Ihr Name:
Ihre Nachricht: