Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
z1013:handbuecher:handbuch_2a [2013/06/25 11:54] – angelegt volkerp | z1013:handbuecher:handbuch_2a [2013/06/25 12:27] (aktuell) – [Handbuch Teil 2] volkerp | ||
---|---|---|---|
Zeile 11: | Zeile 11: | ||
- | 5. | + | 5. [[#software_des_mrb_z1013|Software des MRB Z1013]]\\ |
- | 5.1. | + | 5.1. [[#monitor|Monitor]]\\ |
- | 5.1.1. [[# | + | 5.1.1. [[#leistungen_des_monitors|Leistungen des Monitors]]\\ |
- | 5.1.2. [[# | + | 5.1.2. [[#erweiterungen_des_monitors|Erweiterungen des Monitors]]\\ |
- | 5.2. | + | 5.2. [[#aufbau_einer_programmbibliothek|Aufbau einer Programmbibliothek]]\\ |
- | 5.3. | + | 5.3. [[#basic|BASIC]]\\ |
- | 5.3.1. [[# | + | 5.3.1. [[#programmiersprache_basic|Programmiersprache BASIC]]\\ |
- | 5.3.2. [[# | + | 5.3.2. [[#basic-interpreter|BASIC-Interpreter]]\\ |
- | 5.3.3. [[#|Laden des BASIC-Interpreters]]\\ | + | 5.3.3. [[#laden_des_basic-interpreters|Laden des BASIC-Interpreters]]\\ |
- | 5.3.4. [[#|Arbeit mit dem BASIC-Interpreter]]\\ | + | 5.3.4. [[#arbeit_mit_dem_basic-interpreter|Arbeit mit dem BASIC-Interpreter]]\\ |
- | 5.3.5. [[# | + | 5.3.5. [[#kommandos_des_basic-interpreters|Kommandos des BASIC-Interpreters]]\\ |
- | 5.3.6. [[# | + | 5.3.6. [[#programmierbare_befehle_bzw._anweisungen|Programmierbare Befehle bzw. Anweisungen]]\\ |
- | 5.4. | + | 5.4. [[#hinweise_für_die_erarbeitung_von_anwenderprogrammen|Hinweise für die Erarbeitung von Anwenderprogrammen]]\\ |
- | 5.4.1. [[# | + | 5.4.1. [[#allgemeine_hinweise|Allgemeine Hinweise]]\\ |
- | 5.4.2. [[# | + | 5.4.2. [[#problemanalyse|Problemanalyse]]\\ |
- | 5.4.3. [[# | + | 5.4.3. [[#erarbeitung_der_rechenanweisung_(algorithmus)|Erarbeitung der Rechenanweisung (Algorithmus)]]\\ |
- | 5.4.4. [[# | + | 5.4.4. [[#programmierung|Programmierung]]\\ |
- | 6. | + | 6. [[#erweiterungen_des_mrb_z1013|Erweiterungen des MRB Z1013]]\\ |
- | 6.1. | + | 6.1. [[#allgemeine_hinweise|Allgemeine Hinweise]]\\ |
- | 6.2. | + | 6.2. [[#speichererweiterungen|Speichererweiterungen]]\\ |
- | 6.3. | + | 6.3. [[#anschluss_von_steuereinheiten|Anschluss von Steuereinheiten]]\\ |
Zeile 52: | Zeile 52: | ||
Monitorprogramm, | Monitorprogramm, | ||
keinerlei Aktionen der CPU wie Tastaturabfrage oder Ausgaben möglich. Der | keinerlei Aktionen der CPU wie Tastaturabfrage oder Ausgaben möglich. Der | ||
- | Monitor des MRB Z1013 umfasst eine Grösse | + | Monitor des MRB Z1013 umfasst eine Größe |
Adressbereich von F000H bis F700H. Mit diesem Monitor kann der Benutzer | Adressbereich von F000H bis F700H. Mit diesem Monitor kann der Benutzer | ||
Speicherbereiche ansehen, eigene Programme von Hand oder von Magnetband | Speicherbereiche ansehen, eigene Programme von Hand oder von Magnetband | ||
Zeile 62: | Zeile 62: | ||
Kommandos festgelegt, die bereits im Abschnitt 1.3. vorgestellt wurden. | Kommandos festgelegt, die bereits im Abschnitt 1.3. vorgestellt wurden. | ||
- | Ausser | + | Außer |
auf die hier nicht mehr eingegangen werden soll, enthält der Monitor noch eine | auf die hier nicht mehr eingegangen werden soll, enthält der Monitor noch eine | ||
Reihe weiterer, häufig verwendeter Programmteile. | Reihe weiterer, häufig verwendeter Programmteile. | ||
- | Im folgenden werden diese Monitorfunktionen beschrieben. Dazu wird ausserdem | + | Im folgenden werden diese Monitorfunktionen beschrieben. Dazu wird außerdem |
Adresse, unter der dieses Unterprogramm aufrufbar ist, und ein Datenbyte (DB), | Adresse, unter der dieses Unterprogramm aufrufbar ist, und ein Datenbyte (DB), | ||
über dessen Verwendung weiter unten noch etwas gesagt wird, angegeben. In | über dessen Verwendung weiter unten noch etwas gesagt wird, angegeben. In | ||
Zeile 97: | Zeile 97: | ||
Ausgabe des im A-Register stehenden Zeichens über den Videotreiber. 4 | Ausgabe des im A-Register stehenden Zeichens über den Videotreiber. 4 | ||
- | Steürzeichen | + | Steuerzeichen |
08H - Kursor links\\ | 08H - Kursor links\\ | ||
Zeile 109: | Zeile 109: | ||
Mit dieser Routine wird die Eingabe eines Zeichens von der Tastatur in das A- | Mit dieser Routine wird die Eingabe eines Zeichens von der Tastatur in das A- | ||
Register realisiert. Dabei wird die Routine INKEY genutzt. Die Register BC, DE | Register realisiert. Dabei wird die Routine INKEY genutzt. Die Register BC, DE | ||
- | und HL werden gerettet. Der Rücksprurng | + | und HL werden gerettet. Der Rücksprung |
0. Ansonsten befindet sich der Monitor in einer Eingabewarteschleife. | 0. Ansonsten befindet sich der Monitor in einer Eingabewarteschleife. | ||
Zeile 117: | Zeile 117: | ||
Die der Datenbytedefinition (DB 2) folgende Bytekette wird ausgegeben, bis das | Die der Datenbytedefinition (DB 2) folgende Bytekette wird ausgegeben, bis das | ||
7. Bit gesetzt ist. Graphikzeichen (80H..FFH) sind also mit dieser Routine nicht | 7. Bit gesetzt ist. Graphikzeichen (80H..FFH) sind also mit dieser Routine nicht | ||
- | ausgebbar. Für diesen Zweck ist ein Unterprogramm mit OUTCH aufzubaün. | + | ausgebbar. Für diesen Zweck ist ein Unterprogramm mit OUTCH aufzubauen. |
**INHEX (Konvertierung einer max. 4-steillgen hexadezimalen Zeichenkette in das interne Format)\\ | **INHEX (Konvertierung einer max. 4-steillgen hexadezimalen Zeichenkette in das interne Format)\\ | ||
Zeile 126: | Zeile 126: | ||
im DE-Register übergeben werden. Führende Leerzeichen werden überlesen. Das | im DE-Register übergeben werden. Führende Leerzeichen werden überlesen. Das | ||
einer max. 4-stelligen hexadezimalen Zeichenkette folgende Leerzeichen bzw. | einer max. 4-stelligen hexadezimalen Zeichenkette folgende Leerzeichen bzw. | ||
- | jedes andere Zeichen, welches | + | jedes andere Zeichen, welches |
Trennzeichen interpretiert. Der konvertierte Wert steht im HL-Register. Bei | Trennzeichen interpretiert. Der konvertierte Wert steht im HL-Register. Bei | ||
- | längeren | + | längeren |
befindet sich der gewandelte Wert der letzten 4 Hexa-Zeichen. | befindet sich der gewandelte Wert der letzten 4 Hexa-Zeichen. | ||
Zeile 228: | Zeile 228: | ||
Adr. F2B3H DB 05H** | Adr. F2B3H DB 05H** | ||
- | Ausgabe eines Promptsymbols und anschliessende | + | Ausgabe eines Promptsymbols und anschließende |
Enter (0DH). die Startadresse für die Eingabezeile wird in SOIL | Enter (0DH). die Startadresse für die Eingabezeile wird in SOIL | ||
zwischengespeichert und kann nach Rückkehr für die Auswertung, z. B. für | zwischengespeichert und kann nach Rückkehr für die Auswertung, z. B. für | ||
Zeile 240: | Zeile 240: | ||
Ausgabe des A-Registers hexadezimal. Es werden pro Byte zwei Zeichen ausgegeben. | Ausgabe des A-Registers hexadezimal. Es werden pro Byte zwei Zeichen ausgegeben. | ||
- | **OUTHL (OUT A-Register | + | **OUTHL (OUT A-Register |
Adr. F31AH DB 07H** | Adr. F31AH DB 07H** | ||
Zeile 248: | Zeile 248: | ||
Adr. F369H DB 08H** | Adr. F369H DB 08H** | ||
- | Entspricht dem S-Kommando des Monitors, wobei die Anfangsadrese | + | Entspricht dem S-Kommando des Monitors, wobei die Anfangsadresse |
Endadresse vorher in ARG1 und ARG2 einzutragen sind. | Endadresse vorher in ARG1 und ARG2 einzutragen sind. | ||
Zeile 273: | Zeile 273: | ||
Entsprechend der Adresse im HL-Hegister werden 2 Byte = 4 Zeichen (erst High- | Entsprechend der Adresse im HL-Hegister werden 2 Byte = 4 Zeichen (erst High- | ||
- | Teil, dann Low-Teil) und anschliessend | + | Teil, dann Low-Teil) und anschließend |
**OUTDP (Ausgabe eines Doppelpunktes (:) und weiter wie OTHLS)\\ | **OUTDP (Ausgabe eines Doppelpunktes (:) und weiter wie OTHLS)\\ | ||
Zeile 283: | Zeile 283: | ||
Adr. F5CFH DB 0EH** | Adr. F5CFH DB 0EH** | ||
- | Ausgabe eines Leerzeiehens | + | Ausgabe eines Leerzeichens |
**TRANS (Transfer)\\ | **TRANS (Transfer)\\ | ||
Zeile 294: | Zeile 294: | ||
Adr. F2B9H DB 10H** | Adr. F2B9H DB 10H** | ||
- | Es wird die Eingabe einer Zeichenkette abgefordert, | + | Es wird die Eingabe einer Zeichenkette abgefordert, |
ist. Wie in INLIN steht in SOIL die Anfangsadresse der Zeichenkette für eine | ist. Wie in INLIN steht in SOIL die Anfangsadresse der Zeichenkette für eine | ||
- | anschliessende | + | anschließende |
ausgegeben. | ausgegeben. | ||
Zeile 323: | Zeile 323: | ||
Programmierung sehr wesentlich und verkürzt den sonst erforderlichen | Programmierung sehr wesentlich und verkürzt den sonst erforderlichen | ||
Programmumfang. Der Anwender muss nur wissen, wie diese Programmteile aufgerufen | Programmumfang. Der Anwender muss nur wissen, wie diese Programmteile aufgerufen | ||
- | werden und auf welche Art die übermittlung | + | werden und auf welche Art die Übermittlung |
Diese aufgeführten Monitorfunktionen können ohne Einschränkungen aus | Diese aufgeführten Monitorfunktionen können ohne Einschränkungen aus | ||
Zeile 330: | Zeile 330: | ||
Ihr Aufruf kann erfolgen in der Art: 'CALL adr', wobei als Adresse die | Ihr Aufruf kann erfolgen in der Art: 'CALL adr', wobei als Adresse die | ||
Aufrufadresse der Monitorroutine angegeben wird. Alle Routinen werden mit dem | Aufrufadresse der Monitorroutine angegeben wird. Alle Routinen werden mit dem | ||
- | Befehl ' | + | Befehl ' |
- | gewärleistet | + | gewährleistet |
In Anlage 4 sind wichtige Arbeitszellen des Monitors angegeben. | In Anlage 4 sind wichtige Arbeitszellen des Monitors angegeben. | ||
- | Allerdings muss bei einer eventuellen | + | Allerdings muss bei einer eventuellen |
zu neuen Adressen der Rufe führt, in allen Nutzerprogrammen, | zu neuen Adressen der Rufe führt, in allen Nutzerprogrammen, | ||
benutzen, diese neuen Adressen in den ' | benutzen, diese neuen Adressen in den ' | ||
Deshalb wurde noch eine andere Art des Aufrufs bereitgestellt, | Deshalb wurde noch eine andere Art des Aufrufs bereitgestellt, | ||
- | von änderungen | + | von Änderungen |
anstelle des Aufrufes mit dem ' | anstelle des Aufrufes mit dem ' | ||
Beim Abarbeiten des Restart-Befehls 'RST 20' (E7H) wird ein ' | Beim Abarbeiten des Restart-Befehls 'RST 20' (E7H) wird ein ' | ||
Zeile 356: | Zeile 356: | ||
Ein einfaches Beispiel soll das verdeutlichen: | Ein einfaches Beispiel soll das verdeutlichen: | ||
- | In einem Programmstück so zürst | + | In einem Programmstück so zuerst |
eine beliebige Anzahl von Zeichen eingegeben werden. Diese Zeichen sollen sofort | eine beliebige Anzahl von Zeichen eingegeben werden. Diese Zeichen sollen sofort | ||
wieder auf dem Bildschirm erscheinen, die Betätigung der Entertaste beendet das | wieder auf dem Bildschirm erscheinen, die Betätigung der Entertaste beendet das | ||
Zeile 373: | Zeile 373: | ||
| | ||
| | ||
- | 1000 3E 0C | + | 1000 3E 0C |
| | ||
1002 CD 1B F2 CALL OUTCH ; AUSGABE | 1002 CD 1B F2 CALL OUTCH ; AUSGABE | ||
Zeile 387: | Zeile 387: | ||
| | ||
| | ||
- | 1000 3E 0C | + | 1000 3E 0C |
| | ||
1002 E7 RST 20H ; RUF | 1002 E7 RST 20H ; RUF | ||
Zeile 404: | Zeile 404: | ||
im Monitor zeigt, durch einen Sprungbefehl in eine eigene Auswerteroutine | im Monitor zeigt, durch einen Sprungbefehl in eine eigene Auswerteroutine | ||
ersetzt werden. Bleibt die Zuordnung der Auswahlinformationen erhalten, so sind | ersetzt werden. Bleibt die Zuordnung der Auswahlinformationen erhalten, so sind | ||
- | auch in diesem Fall keinerlei | + | auch in diesem Fall keinerlei |
die den Aufruf über den ' | die den Aufruf über den ' | ||
- | Damit ist es z. B. möglich, eigene Ein- and Ausgaberoutinen, | + | Damit ist es z. B. möglich, eigene Ein- und Ausgaberoutinen, |
Bedienung anderer Geräte realisiert wird, zu verwenden und damit die Ein- und | Bedienung anderer Geräte realisiert wird, zu verwenden und damit die Ein- und | ||
Ausgaben über andere Geräte zu erreichen. | Ausgaben über andere Geräte zu erreichen. | ||
- | Abschliessend | + | Abschließend |
Monitors mit Hilfe des im Anhang abgedruckten Reassemblers durch Reassemblieren | Monitors mit Hilfe des im Anhang abgedruckten Reassemblers durch Reassemblieren | ||
des ROM-Inhaltes erzeugt werden kann. | des ROM-Inhaltes erzeugt werden kann. | ||
Zeile 456: | Zeile 456: | ||
meist sehr mühsam eingegebene Programmteile nach dem Ausschalten wieder | meist sehr mühsam eingegebene Programmteile nach dem Ausschalten wieder | ||
verloren. Aus diesem Grund ist es notwendig, sich eine Programmbibliothek auf | verloren. Aus diesem Grund ist es notwendig, sich eine Programmbibliothek auf | ||
- | einem ex ternen | + | einem externen |
wird, um es für spätere Nutzung immer wieder zur Verfügung zu haben. Im | wird, um es für spätere Nutzung immer wieder zur Verfügung zu haben. Im | ||
Monitor sind zu diesem Zweck die Kommandos " | Monitor sind zu diesem Zweck die Kommandos " | ||
Zeile 463: | Zeile 463: | ||
laden. | laden. | ||
- | Die Eingabe der Programme erfolgt beim erstenmal | + | Die Eingabe der Programme erfolgt beim ersten mal meist mittels der Tastatur. Im |
allgemeinen wird die hexadezimale Ziffernfolge, | allgemeinen wird die hexadezimale Ziffernfolge, | ||
Speicherbereich eingetastet werden soll, einer Liste entnommen (z. B. die in | Speicherbereich eingetastet werden soll, einer Liste entnommen (z. B. die in | ||
diesem Buch enthaltenen Testbeispiele). | diesem Buch enthaltenen Testbeispiele). | ||
- | Diese Listen entstanden entweder als Resultat eines übersetzungslaufes | + | Diese Listen entstanden entweder als Resultat eines Übersetzungslaufes |
- | einer EDV-Anlage oder wurden durch manülle übersetzung | + | einer EDV-Anlage oder wurden durch manuelle Übersetzung |
jedem Fall wird es sich um ein in sich abgeschlossenes Programmteil handeln. | jedem Fall wird es sich um ein in sich abgeschlossenes Programmteil handeln. | ||
Eine Programmänderung oder -erweiterung während der Eingabe wird kaum zu | Eine Programmänderung oder -erweiterung während der Eingabe wird kaum zu | ||
Zeile 477: | Zeile 477: | ||
in der Art, wie er auch mit den D-Kommando auf dem Bildschirm zu sehen ist. | in der Art, wie er auch mit den D-Kommando auf dem Bildschirm zu sehen ist. | ||
- | Damit können recht einfach Liste und tatsächlicher | + | Damit können recht einfach Liste und tatsächlicher |
verglichen werden. Zur Eingabe wird das M-Kommando des Monitors verwendet. | verglichen werden. Zur Eingabe wird das M-Kommando des Monitors verwendet. | ||
Mit dem Parameter wird die Anfangsadresse des Programmes an gegeben. Es ist | Mit dem Parameter wird die Anfangsadresse des Programmes an gegeben. Es ist | ||
- | zweckmässig, vorher die Tastatur mit dem H-Kommando in die hexadezimale Eingabe | + | zweckmäßig, vorher die Tastatur mit dem H-Kommando in die hexadezimale Eingabe |
zu schalten. Die Ziffern sind jetzt ohne Benutzung der Shift-Taste direkt | zu schalten. Die Ziffern sind jetzt ohne Benutzung der Shift-Taste direkt | ||
- | erreichbar. | + | erreichbar. |
- | Es empfielt | + | Es empfiehlt |
Eingabe mit dem Semikolon ";" | Eingabe mit dem Semikolon ";" | ||
dahin eingetasteten Abschnitt zu kontrollieren. Die zeilenweise mitausgegebenen | dahin eingetasteten Abschnitt zu kontrollieren. Die zeilenweise mitausgegebenen | ||
Zeile 493: | Zeile 493: | ||
Nach endlicher Zeit steht das Programm im gewünschten Speicherbereich und | Nach endlicher Zeit steht das Programm im gewünschten Speicherbereich und | ||
entspricht dem Original auf der Liste. Es wäre nun grundfalsch, | entspricht dem Original auf der Liste. Es wäre nun grundfalsch, | ||
- | Abarbeitung zu beginnen, vielmehr sollte das Programm | + | Abarbeitung zu beginnen, vielmehr sollte das Programm |
Magnetband abgespeichert und somit gesichert werden. Das erspart wiederholtes | Magnetband abgespeichert und somit gesichert werden. Das erspart wiederholtes | ||
Eingeben von Programmteilen über Tastatur und erleichtert die Arbeit | Eingeben von Programmteilen über Tastatur und erleichtert die Arbeit | ||
Zeile 505: | Zeile 505: | ||
sowie die im S-Kommando verwendeten Parameter notieren. Das erleichtert ein | sowie die im S-Kommando verwendeten Parameter notieren. Das erleichtert ein | ||
späteres Wiederauffinden der gespeicherten Informationen und gewährleistet das | späteres Wiederauffinden der gespeicherten Informationen und gewährleistet das | ||
- | ordnungegemässe | + | ordnungsgemäße |
Möchte man das wiederholte Einlesen vom Band, das ja auch einen gewissen | Möchte man das wiederholte Einlesen vom Band, das ja auch einen gewissen | ||
Zeile 513: | Zeile 513: | ||
Mit dem T-Kommando (Transfer) wird eine gleichartige Kopie des Programms in | Mit dem T-Kommando (Transfer) wird eine gleichartige Kopie des Programms in | ||
einem anderen, nicht genutzten Speicherbereich erzeugt. Falls jetzt das Programm | einem anderen, nicht genutzten Speicherbereich erzeugt. Falls jetzt das Programm | ||
- | beim Testen zerstört, wird ist es möglich, wieder mit dem T-Kommanda | + | beim Testen zerstört, wird ist es möglich, wieder mit dem T-Kommando |
auf den ursprünglichen Speicherbereich zurückzuspeichern und damit das | auf den ursprünglichen Speicherbereich zurückzuspeichern und damit das | ||
Programm wieder herzustellen. | Programm wieder herzustellen. | ||
Zeile 519: | Zeile 519: | ||
Im allgemeinen werden Programme nach dem Eingeben nicht sofort richtig und | Im allgemeinen werden Programme nach dem Eingeben nicht sofort richtig und | ||
fehlerfrei arbeiten, dazu sind zu viele Fehlermöglichkeiten vorhanden. Sie | fehlerfrei arbeiten, dazu sind zu viele Fehlermöglichkeiten vorhanden. Sie | ||
- | reichen von einfachen Eingabefehlern über falsche Anschlussstellen | + | reichen von einfachen Eingabefehlern über falsche Anschlussstellen |
- | Fehlern im Programmentwurf (insbesondere bei manüll | + | Fehlern im Programmentwurf (insbesondere bei manuell |
Damit ergibt sich die Notwendigkeit, | Damit ergibt sich die Notwendigkeit, | ||
Zeile 528: | Zeile 528: | ||
Zum Testen von Programmen unter den für diese Verhältnisse typischen | Zum Testen von Programmen unter den für diese Verhältnisse typischen | ||
Bedingungen ergibt sich etwa nachfolgende Herangehensweise, | Bedingungen ergibt sich etwa nachfolgende Herangehensweise, | ||
- | fortschreitendem Erfahrungsstand | + | fortschreitendem Erfahrungsstand |
Zeile 539: | Zeile 539: | ||
* Auftretende Programmschleifen sowie häufig aufgerufene Routinen (Unterprogramme) sind mindestens einmal im Schrittbetrieb abzuarbeiten. Sofern man danach von der Richtigkeit dieser Programmteile überzeugt ist, wird bei wiederholtem Aufruf die Haltepunktadresse auf den dem Aufruf oder dem Schleifenausgang folgenden Befehl gelegt und damit diese Programmteile direkt abgearbeitet. | * Auftretende Programmschleifen sowie häufig aufgerufene Routinen (Unterprogramme) sind mindestens einmal im Schrittbetrieb abzuarbeiten. Sofern man danach von der Richtigkeit dieser Programmteile überzeugt ist, wird bei wiederholtem Aufruf die Haltepunktadresse auf den dem Aufruf oder dem Schleifenausgang folgenden Befehl gelegt und damit diese Programmteile direkt abgearbeitet. | ||
- | * Alle im schrittbetrieb | + | * Alle im Schrittbetrieb |
- | * Falls die Testung des Programmes nicht auf einmal durchgängig erfolgen kann, sei es durch zu grossen | + | * Falls die Testung des Programmes nicht auf einmal durchgängig erfolgen kann, sei es durch zu großen |
* Falls durch den Monitor nicht bereits die Protokollierung der Monitorbefehle bei Monitorrufen verhindert wird, sollte durch Setzen der Haltpunktadresse auf den dem Monitorruf folgenden Befehl diese Protokollierung ausgeschlossen worden. | * Falls durch den Monitor nicht bereits die Protokollierung der Monitorbefehle bei Monitorrufen verhindert wird, sollte durch Setzen der Haltpunktadresse auf den dem Monitorruf folgenden Befehl diese Protokollierung ausgeschlossen worden. | ||
Zeile 547: | Zeile 547: | ||
Bei Beachtung dieser Hinweise ist die Austestung aller Programme möglich. | Bei Beachtung dieser Hinweise ist die Austestung aller Programme möglich. | ||
Sollten während der Testung in Programm Fehler festgestellt werden, die eine | Sollten während der Testung in Programm Fehler festgestellt werden, die eine | ||
- | Vernänderung | + | Veränderung |
Maschinenkode vorliegenden Programmen besonders schwierig. Entweder man bemüht | Maschinenkode vorliegenden Programmen besonders schwierig. Entweder man bemüht | ||
- | sich um eine änderung | + | sich um eine Änderung |
- | zu ändernden | + | zu ändernden |
Dazu wird an Stelle von drei oder mehr Befehlsbyte ein ' | Dazu wird an Stelle von drei oder mehr Befehlsbyte ein ' | ||
Zeile 566: | Zeile 566: | ||
Diese Art der Maschinenkodeerweiterung ist zu Testzwecken durchaus möglich, | Diese Art der Maschinenkodeerweiterung ist zu Testzwecken durchaus möglich, | ||
- | sollte aber zu einem späteren Zeitpunkt durch änderung | + | sollte aber zu einem späteren Zeitpunkt durch Änderung |
Neuübersetzung Berücksichtigung finden. | Neuübersetzung Berücksichtigung finden. | ||
Zeile 574: | Zeile 574: | ||
werden können. | werden können. | ||
- | Allergrössten | + | Allergrößten |
Programmteile wiedergefunden und später problemlos geladen werden können. | Programmteile wiedergefunden und später problemlos geladen werden können. | ||
Zeile 592: | Zeile 592: | ||
entwickelt. Sie hatten dabei die Entwicklung einer Computersprache vor Augen, | entwickelt. Sie hatten dabei die Entwicklung einer Computersprache vor Augen, | ||
die einerseits vom Anfänger leicht zu erlernen ist und andererseits viele | die einerseits vom Anfänger leicht zu erlernen ist und andererseits viele | ||
- | Möglichkeiten bietet. Man sollte mit dier Sprache leicht numerische (Zahlen-) | + | Möglichkeiten bietet. Man sollte mit dieser |
Probleme angehen können, aber ebenso sollten Verwaltungsaufgaben, | Probleme angehen können, aber ebenso sollten Verwaltungsaufgaben, | ||
- | Textverarbeitung eine grosse | + | Textverarbeitung eine große |
Deshalb ersann man für diese Sprache die Bezeichnung BASIC, ein Wort, das | Deshalb ersann man für diese Sprache die Bezeichnung BASIC, ein Wort, das | ||
konstruiert wurde aus den Anfangsbuchstaben von: Beginner' | konstruiert wurde aus den Anfangsbuchstaben von: Beginner' | ||
Zeile 600: | Zeile 600: | ||
Neben den Wörtern " | Neben den Wörtern " | ||
- | ohne weiterse | + | ohne weiteres |
vielleicht ein wenig verwirren. Damit wird nur gesagt, dass man mit einem | vielleicht ein wenig verwirren. Damit wird nur gesagt, dass man mit einem | ||
- | sogenannten symbolischen | + | sogenannten symbolischen |
denen bestimmte Verarbeitungsbefehle mit Hilfe von Symbolen angegeben werden, z. | denen bestimmte Verarbeitungsbefehle mit Hilfe von Symbolen angegeben werden, z. | ||
B. das Addieren oder Subtrahieren. Also nur wenige Wörter, deren Bedeutung bei | B. das Addieren oder Subtrahieren. Also nur wenige Wörter, deren Bedeutung bei | ||
Zeile 627: | Zeile 627: | ||
übersetzten Programmen anzusehen. | übersetzten Programmen anzusehen. | ||
- | Ein Vorteil ist die einfache | + | Ein Vorteil ist die einfache |
- | auf dem Bildschirm, wie sie eingegeben wurden. | + | auf dem Bildschirm, wie sie eingegeben wurden. |
Anweisungen sofort ausgeführt werden. Auf diese Weise kann der Computer an | Anweisungen sofort ausgeführt werden. Auf diese Weise kann der Computer an | ||
Stelle eines Tischrechners verwendet werden. Auf diese Betriebsart wird noch | Stelle eines Tischrechners verwendet werden. Auf diese Betriebsart wird noch | ||
Zeile 636: | Zeile 636: | ||
spätere Beispiele zeigen werden, kann ein Teil des BASIC-Programmes häufiger als | spätere Beispiele zeigen werden, kann ein Teil des BASIC-Programmes häufiger als | ||
nur einmal ausgeführt werden, z. B. bei der Unterprogrammarbeit oder in | nur einmal ausgeführt werden, z. B. bei der Unterprogrammarbeit oder in | ||
- | Programmschleifen. Vom Interpreter wird aber jedesmal, wenn der entsprechende | + | Programmschleifen. Vom Interpreter wird aber jedes mal, wenn der entsprechende |
Abschnitt an der Reihe ist, Anweisung um Anweisung neu interpretiert. Das hat | Abschnitt an der Reihe ist, Anweisung um Anweisung neu interpretiert. Das hat | ||
- | zur Folge, dass solche Programme längere | + | zur Folge, dass solche Programme längere |
Programmlösungen in Maschinensprache erfordern. Im Extremfall kann das dazu | Programmlösungen in Maschinensprache erfordern. Im Extremfall kann das dazu | ||
führen, dass besonders zeitkritische Probleme nur in Maschinensprache lösbar | führen, dass besonders zeitkritische Probleme nur in Maschinensprache lösbar | ||
Zeile 646: | Zeile 646: | ||
=== 5.3.3. Laden des BASIC-Interpreters === | === 5.3.3. Laden des BASIC-Interpreters === | ||
- | Da der BASIC-Interpreter selbst ein Maschinenprogranun | + | Da der BASIC-Interpreter selbst ein Maschinenprogramm |
Speicher des Z1013 einen Speicherplatz von ca. 2.75 KByte. Dazu wird noch | Speicher des Z1013 einen Speicherplatz von ca. 2.75 KByte. Dazu wird noch | ||
weiterer Speicherraum zum Ablegen der BASIC-Programme gebraucht. | weiterer Speicherraum zum Ablegen der BASIC-Programme gebraucht. | ||
Zeile 657: | Zeile 657: | ||
Ein einziger Fehler kann das Interpreterprogramm funktionsunfähig machen. | Ein einziger Fehler kann das Interpreterprogramm funktionsunfähig machen. | ||
- | Das Eintippen erfolgt mit dem in 1.3. kennengelernten M-Kom mando. Es wird | + | Das Eintippen erfolgt mit dem in 1.3. kennengelernten M-Kommando. Es wird |
- | immer ein kleiner Abschnitt eingegeben und an schliessend | + | immer ein kleiner Abschnitt eingegeben und anschließend |
wieder angezeigt. Durch Vergleich mit den Prüfsummen je Zeile auf dem Bildschirm | wieder angezeigt. Durch Vergleich mit den Prüfsummen je Zeile auf dem Bildschirm | ||
- | und in der Liste wird die Fehlerfreiheit festgestellt. Muss die Ar beit | + | und in der Liste wird die Fehlerfreiheit festgestellt. Muss die Arbeit |
unterbrochen werden oder ist der Interpreter vollständig eingegeben, kann er wie | unterbrochen werden oder ist der Interpreter vollständig eingegeben, kann er wie | ||
jedes andere Maschinenkode-Programm auf Magnetband gespeichert werden und steht | jedes andere Maschinenkode-Programm auf Magnetband gespeichert werden und steht | ||
Zeile 672: | Zeile 672: | ||
Nach dem Start des BASIC-Interpreters erscheint auf dem vorher gelöschten | Nach dem Start des BASIC-Interpreters erscheint auf dem vorher gelöschten | ||
Bildschirm die Meldung ' | Bildschirm die Meldung ' | ||
- | ' | + | ' |
Promptsymbol. | Promptsymbol. | ||
Zeile 683: | Zeile 683: | ||
Die Länge einer Programmzeile darf 64 Zeichen nicht überschreiten. Jede | Die Länge einer Programmzeile darf 64 Zeichen nicht überschreiten. Jede | ||
- | Programmzeile und jede Kommandöingabe | + | Programmzeile und jede Kommandoeingabe |
- | Beginnt die eingegebende | + | Beginnt die eingegebene |
Zeile als Programmzeile interpretiert und abgespeichert. Diese Zeilennummern | Zeile als Programmzeile interpretiert und abgespeichert. Diese Zeilennummern | ||
- | sind ganze Zahlen im Bereich zwischen 1 und 32767. Bei der Numerierung | + | sind ganze Zahlen im Bereich zwischen 1 und 32767. Bei der Nummerierung |
Programmzeilen geht man sinnvollerweise in Zehnerschritten vor. Dadurch ergibt | Programmzeilen geht man sinnvollerweise in Zehnerschritten vor. Dadurch ergibt | ||
sich die Möglichkeit, | sich die Möglichkeit, | ||
Zeile 693: | Zeile 693: | ||
Zeilennummern. | Zeilennummern. | ||
- | Alle anderen Eingaben ohne Zeilennunmmern | + | Alle anderen Eingaben ohne Zeilennummern |
Ausführung angesehen. Sind sie zulässig werden sie ausgeführt, | Ausführung angesehen. Sind sie zulässig werden sie ausgeführt, | ||
eine Fehlermeldung. Danach kann die nächste Eingabe erfolgen. | eine Fehlermeldung. Danach kann die nächste Eingabe erfolgen. | ||
Zeile 723: | Zeile 723: | ||
weggelassen werden. Diese beiden Möglichkeiten der Programmverkürzung erlauben | weggelassen werden. Diese beiden Möglichkeiten der Programmverkürzung erlauben | ||
es, den Programmspeicher besser auszunutzen, | es, den Programmspeicher besser auszunutzen, | ||
- | unterzubringen. Dadurch geht aber die übersichtlichkeit | + | unterzubringen. Dadurch geht aber die Übersichtlichkeit |
Es dürfen mehrere Anweisungen in einer Programmzeile untergebracht werden. Diese | Es dürfen mehrere Anweisungen in einer Programmzeile untergebracht werden. Diese | ||
Zeile 737: | Zeile 737: | ||
Den meisten der Schlüsselworte folgt ein weiterer Ausdruck. Das können Zahlen, | Den meisten der Schlüsselworte folgt ein weiterer Ausdruck. Das können Zahlen, | ||
Variable oder arithmetische Konstruktionen mit diesen sein. Erforderlichenfalls | Variable oder arithmetische Konstruktionen mit diesen sein. Erforderlichenfalls | ||
- | sind derartige Konstruktionen mit Klammern | + | sind derartige Konstruktionen mit Klammern |
mathematisch eindeutig zu machen. Der Interpreter arbeitet nach | mathematisch eindeutig zu machen. Der Interpreter arbeitet nach | ||
Zeile 746: | Zeile 746: | ||
Als Variable sind alle Buchstaben des Alphabets von A bis Z erlaubt. Eine | Als Variable sind alle Buchstaben des Alphabets von A bis Z erlaubt. Eine | ||
Variable darf aber nur aus einem einzelnen Buchstaben bestehen. Es können nur | Variable darf aber nur aus einem einzelnen Buchstaben bestehen. Es können nur | ||
- | Grossbuchstaben | + | Großbuchstaben |
Mit dem Symbol ' | Mit dem Symbol ' | ||
Zeile 794: | Zeile 794: | ||
< | < | ||
> | > | ||
- | Reihenfolge der Zei~ennnunrnern. | + | Reihenfolge der Zeilennummern. |
>LIST 10 Auflisten des BASIC-Programmes ab der Zeile 10 | >LIST 10 Auflisten des BASIC-Programmes ab der Zeile 10 | ||
Zeile 812: | Zeile 812: | ||
Das im Speicher vorhandene BASIC-Programm wird scheinbar gelöscht. Tatsächlich | Das im Speicher vorhandene BASIC-Programm wird scheinbar gelöscht. Tatsächlich | ||
- | ist es noch im Programmspeicher enthalten, wird aber bei neueingabe | + | ist es noch im Programmspeicher enthalten, wird aber bei Neueingabe |
Programmes überschrieben. | Programmes überschrieben. | ||
Zeile 828: | Zeile 828: | ||
**END** | **END** | ||
- | Dieser Befehl wird zum Vergrössern | + | Dieser Befehl wird zum Vergrößern |
Programmspeichers verwendet. Mit ' | Programmspeichers verwendet. Mit ' | ||
gesetzt werden, z. B. bei Speichererweiterung. Lässt der augenblickliche | gesetzt werden, z. B. bei Speichererweiterung. Lässt der augenblickliche | ||
Ausstattungsgrad des MRB Z1013 diesen Speicherbedarf nicht zu, weil er real | Ausstattungsgrad des MRB Z1013 diesen Speicherbedarf nicht zu, weil er real | ||
nicht vorhanden ist, wird die Fehlermeldung ' | nicht vorhanden ist, wird die Fehlermeldung ' | ||
- | beachten, dass ein Bereich von 140 Byte hinter den Programmspeicher | + | beachten, dass ein Bereich von 140 Byte hinter den Programmspeicher |
der vom BASIC-Interpreter intern verwaltet wird. | der vom BASIC-Interpreter intern verwaltet wird. | ||
Zeile 852: | Zeile 852: | ||
Mit diesem Kommando wird ein durch CSAVE abgespeichertes BASIC-Programm wieder | Mit diesem Kommando wird ein durch CSAVE abgespeichertes BASIC-Programm wieder | ||
- | von Magnetband eingegeben. Zur Kontrolle wird der im CSAVE-Kommande | + | von Magnetband eingegeben. Zur Kontrolle wird der im CSAVE-Kommando |
Name auf dem Bildschirm ausgegeben. | Name auf dem Bildschirm ausgegeben. | ||
Zeile 861: | Zeile 861: | ||
Definiert den Anfang einer Ergibtanweisung, | Definiert den Anfang einer Ergibtanweisung, | ||
muss nicht vorangestellt werden, es dient lediglich der besseren | muss nicht vorangestellt werden, es dient lediglich der besseren | ||
- | übersichtlichkeit. | + | Übersichtlichkeit. |
Die im folgenden angegebenen Beispiele stellen nicht in jedem | Die im folgenden angegebenen Beispiele stellen nicht in jedem | ||
Zeile 894: | Zeile 894: | ||
< | < | ||
- | >= grösser | + | >= größer |
# ungleich | # ungleich | ||
- | > | + | > |
= gleich | = gleich | ||
< kleiner | < kleiner | ||
Zeile 925: | Zeile 925: | ||
**FOR...TO...STEP...NEXT** | **FOR...TO...STEP...NEXT** | ||
- | Damit lassen sich leicht Programmschleifen | + | Damit lassen sich leicht Programmschleifen |
- | freibestimmbaren | + | frei bestimmbaren |
Jede mit ' | Jede mit ' | ||
Zählvariable wie die FOR-Anweisung beinhaltet, abgeschlossen werden. | Zählvariable wie die FOR-Anweisung beinhaltet, abgeschlossen werden. | ||
Zeile 942: | Zeile 942: | ||
Der Programmabschnitt von Zeile 110 bis Zeile 150 wird N-mal durchlaufen, | Der Programmabschnitt von Zeile 110 bis Zeile 150 wird N-mal durchlaufen, | ||
' | ' | ||
- | Wert N überschritten wurde. Danach wird die Schleife verlassen- | + | Wert N überschritten wurde. Danach wird die Schleife verlassen. |
Eine Schrittweite wird mit dem Schlüsselwort STEP gekennzeichnet. Wird STEP | Eine Schrittweite wird mit dem Schlüsselwort STEP gekennzeichnet. Wird STEP | ||
Zeile 963: | Zeile 963: | ||
Eine ' | Eine ' | ||
' | ' | ||
- | Schleife von ausserhalb | + | Schleife von außerhalb |
**GOSUB...RETURN** | **GOSUB...RETURN** | ||
Zeile 989: | Zeile 989: | ||
Dadurch werden in einen BASIC-Programm; | Dadurch werden in einen BASIC-Programm; | ||
- | dienen der besseren | + | dienen der besseren |
Abarbeitung durch den Interpreter überlesen. Die Programmzeile belegt aber | Abarbeitung durch den Interpreter überlesen. Die Programmzeile belegt aber | ||
entsprechend ihrer Länge Speicherplatz in RAM-Bereich des Rechners. | entsprechend ihrer Länge Speicherplatz in RAM-Bereich des Rechners. | ||
Zeile 1005: | Zeile 1005: | ||
sind mit der Taste ' | sind mit der Taste ' | ||
- | Eingabe ist mit der Enter-Taste | + | Eingabe ist mit der Enter-Taste |
auf die erste freie Position in der Eingabezeile gestellt werden!). | auf die erste freie Position in der Eingabezeile gestellt werden!). | ||
Zeile 1036: | Zeile 1036: | ||
Damit wird die Ausgabe von numerischen Werten und von Textketten ermöglicht. | Damit wird die Ausgabe von numerischen Werten und von Textketten ermöglicht. | ||
- | Texte sind dabei in Hochkomma | + | Texte sind dabei in Hochkomma |
innerhalb einer ' | innerhalb einer ' | ||
werden bei fehlender Formatangabe sechsstellig mit unterdrückten Vornullen | werden bei fehlender Formatangabe sechsstellig mit unterdrückten Vornullen | ||
Zeile 1045: | Zeile 1045: | ||
Durch ein Doppelkreuz, | Durch ein Doppelkreuz, | ||
geändert werden. Die Zahl gibt die maximal auszugebende Stellenzahl an. Die | geändert werden. Die Zahl gibt die maximal auszugebende Stellenzahl an. Die | ||
- | Formatisierung bleibt bis zur naschsten | + | Formatisierung bleibt bis zur nächsten |
' | ' | ||
' | ' | ||
Zeile 1077: | Zeile 1077: | ||
Arbeit des Interpreters mit der folgenden BASIC-Anweisung fortgesetzt werden, so | Arbeit des Interpreters mit der folgenden BASIC-Anweisung fortgesetzt werden, so | ||
ist das MC-Unterprogramm mit einen ' | ist das MC-Unterprogramm mit einen ' | ||
- | b. 0C9H, siehe auch Abschnitt 4, Unterprogrammtechnik) | + | b. 0C9H, siehe auch Abschnitt 4, Unterprogrammtechnik) |
- | übermittlung | + | Übermittlung |
Beispiel: | Beispiel: | ||
Zeile 1125: | Zeile 1125: | ||
> | > | ||
- | Der Wert 65 (dezimal) wird in den Speicherplatz mit der Adrtsse | + | Der Wert 65 (dezimal) wird in den Speicherplatz mit der Adresse |
- | 41H abgespeichert. 41H entspricht dem ASCII-Kode für den Grossbuchstaben | + | 41H abgespeichert. 41H entspricht dem ASCII-Kode für den Großbuchstaben |
< | < | ||
Zeile 1139: | Zeile 1139: | ||
3000H umgespeichert. | 3000H umgespeichert. | ||
- | Dieses Programm entspricht dem Monitorkommande: T F000 3000 3FF. Man beachte die | + | Dieses Programm entspricht dem Monitorkommando: T F000 3000 3FF. Man beachte die |
unterschiedlichen Ausführungszeiten. | unterschiedlichen Ausführungszeiten. | ||
Zeile 1178: | Zeile 1178: | ||
Der durch ' ' | Der durch ' ' | ||
- | Einzelzeichenunwandlung | + | Einzelzeichenumwandlung |
Zeichen ist zwischen dem Hochkomma anzugeben. | Zeichen ist zwischen dem Hochkomma anzugeben. | ||
Zeile 1232: | Zeile 1232: | ||
Der in der OUT-Anweisung angegebene Wert des Ausdruckes wird an die in der | Der in der OUT-Anweisung angegebene Wert des Ausdruckes wird an die in der | ||
Anweisung zugewiesene E/A-Adresse des MRB Z1013 ausgegeben. Der Wert darf 255 | Anweisung zugewiesene E/A-Adresse des MRB Z1013 ausgegeben. Der Wert darf 255 | ||
- | nicht überschreiten (255 ist bekanntlich die grösste | + | nicht überschreiten (255 ist bekanntlich die größte |
darstellbar ist.). | darstellbar ist.). | ||
Zeile 1285: | Zeile 1285: | ||
</ | </ | ||
- | Folgende Funktionen werden | + | Folgende Funktionen werden |
**RND** | **RND** | ||
Zeile 1317: | Zeile 1317: | ||
dar. Die sich aus dem nachfolgenden Ausdruck ergebende Anzahl | dar. Die sich aus dem nachfolgenden Ausdruck ergebende Anzahl | ||
von Leerzeichen wird auf dem Bildschirm ausgegeben. Die | von Leerzeichen wird auf dem Bildschirm ausgegeben. Die | ||
- | nachfolgende Ausgabe von Zeichen beginnt nach diesen | + | nachfolgende Ausgabe von Zeichen beginnt nach diesen |
- | zeichen. | + | |
< | < | ||
Zeile 1331: | Zeile 1330: | ||
</ | </ | ||
- | Durch die TAB-Punktion wird die Darstellung von Kurven | + | Durch die TAB-Punktion wird die Darstellung von Kurven |
- | lich. | + | |
> | > | ||
Zeile 1369: | Zeile 1367: | ||
Natürlich können wir uns diese Denkarbeit ersparen und den Rechner mit fertigen | Natürlich können wir uns diese Denkarbeit ersparen und den Rechner mit fertigen | ||
Programmen " | Programmen " | ||
- | Lösung von häfig | + | Lösung von häufig |
nur das mitgelieferte BASIC-Interpreter-Programm genannt, in dem eine Fülle | nur das mitgelieferte BASIC-Interpreter-Programm genannt, in dem eine Fülle | ||
geistiger Arbeit steckt und das einem breiten Anwenderkreis eine vereinfachte | geistiger Arbeit steckt und das einem breiten Anwenderkreis eine vereinfachte | ||
Zeile 1407: | Zeile 1405: | ||
kurzen Programm den Zeichengeneratorinhalt mit ansteigender Kode-Zahl | kurzen Programm den Zeichengeneratorinhalt mit ansteigender Kode-Zahl | ||
" | " | ||
- | die übersichtlichkeit | + | die Übersichtlichkeit |
die Grafikzeichen, | die Grafikzeichen, | ||
- | übergang ineinanderfliessen. Da wir mit dieser Methode auch nur ein Viertel des | + | Übergang ineinanderfließen. Da wir mit dieser Methode auch nur ein Viertel des |
Bildschirmes ausnutzen, bietet es sich an, die Zeichendarstellung durch das | Bildschirmes ausnutzen, bietet es sich an, die Zeichendarstellung durch das | ||
Einfügen von Leerzeichen und Leerzeilen aufzuspreizen. Wir erhalten damit 16 | Einfügen von Leerzeichen und Leerzeilen aufzuspreizen. Wir erhalten damit 16 | ||
Zeile 1418: | Zeile 1416: | ||
ausreichen würde, verzichten können. | ausreichen würde, verzichten können. | ||
- | Auf Probleme der Verarbeitungezeit verden | + | Auf Probleme der Verarbeitungszeit werden |
- | zusprechen kommen. Prinzipiell wäre es möglich, den Bedienungekomfort | + | zusprechen kommen. Prinzipiell wäre es möglich, den Bedienungskomfort |
steigern, z. B. eine Anwahl bestimmter Zeichen oder Zeichengruppen über die | steigern, z. B. eine Anwahl bestimmter Zeichen oder Zeichengruppen über die | ||
Tastatur zu ermöglichen und parallel dazu den Zeichenkode sowohl hexadezimal als | Tastatur zu ermöglichen und parallel dazu den Zeichenkode sowohl hexadezimal als | ||
auch dezimal darzustellen. Das würde aber unseren Forderungen nach Einfachheit | auch dezimal darzustellen. Das würde aber unseren Forderungen nach Einfachheit | ||
- | und übersichtlichkeit | + | und Übersichtlichkeit |
- | === 5.4.3. Erarbeitung der Rechnenanweisung | + | === 5.4.3. Erarbeitung der Rechenanweisung |
Nachdem wir unsere jeweilige Aufgabenstellung entsprechend den Empfehlungen des | Nachdem wir unsere jeweilige Aufgabenstellung entsprechend den Empfehlungen des | ||
Zeile 1432: | Zeile 1430: | ||
Für unser gewähltes Beispiel könnte man den Algorithmus | Für unser gewähltes Beispiel könnte man den Algorithmus | ||
- | folgendermassen | + | folgendermaßen |
- Setze auf die Anfangsadresse des Bildschirms das Zeichen mit der Kode-Zahl 0! | - Setze auf die Anfangsadresse des Bildschirms das Zeichen mit der Kode-Zahl 0! | ||
Zeile 1442: | Zeile 1440: | ||
Dieser mit Worten beschriebene Algorithmus stellt eine Liste dar, die von oben | Dieser mit Worten beschriebene Algorithmus stellt eine Liste dar, die von oben | ||
nach unten abgearbeitet wird. Dadurch wird es schwierig, sich wiederholende | nach unten abgearbeitet wird. Dadurch wird es schwierig, sich wiederholende | ||
- | Programmabschnitte (Zyklen) und Programmverzweigumgen | + | Programmabschnitte (Zyklen) und Programmverzweigungen |
beschreiben. | beschreiben. | ||
Zeile 1452: | Zeile 1450: | ||
- | < | + | ^ Bild ^ Bedeutung |
- | Bild | + | | {{: |
- | -------------------------------------------------------------- | + | | {{: |
- | Anweisung | + | | {{: |
- | Operationen (Folge) | + | | {{: |
- | Verzweigung | + | | {{: |
- | laufes | + | | {{: |
- | einer oder mehrerer | + | |
- | dingungen, dadurch Aufbau | + | |
- | von Zyklen möglich | + | |
- | Eingabe/ | + | |
- | Grenzstelle | + | |
- | chung | + | |
- | Ende (Stop) eines Programmes | + | |
- | Verbindungsstelle | + | |
- | teilen | + | |
- | Unterprogramm | + | |
- | Stelle aufgerufen wird | + | |
- | </ | + | |
Um bei einem Programmentwurf durch die Vielfalt von Programmteilen und | Um bei einem Programmentwurf durch die Vielfalt von Programmteilen und | ||
- | Gestaltungselementen nicht die übersicht | + | Gestaltungselementen nicht die Übersicht |
schrittweise den Abstraktionsgrad zu verfeinern. | schrittweise den Abstraktionsgrad zu verfeinern. | ||
Diese Methode soll an unserem gewählten Beispiel demonstriert werden. Den vorhin | Diese Methode soll an unserem gewählten Beispiel demonstriert werden. Den vorhin | ||
angeführten verbalen Algorithmus könnte man in einer groben Abstraktion | angeführten verbalen Algorithmus könnte man in einer groben Abstraktion | ||
- | folgendermassen | + | folgendermaßen |
+ | |||
+ | {{: | ||
Dieser PAP enthält viele Vereinfachungen, | Dieser PAP enthält viele Vereinfachungen, | ||
- | übersetzung | + | Übersetzung |
- | abstrahiert, | + | abstrahiert, |
Wir wollen deshalb zunächst Zyklus 1 präzisieren. Um eine Bildschirmzeile | Wir wollen deshalb zunächst Zyklus 1 präzisieren. Um eine Bildschirmzeile | ||
Zeile 1493: | Zeile 1481: | ||
auch als Modul bezeichnet wird. Hier die Darstellung von Zyklus 1 als Teil-PAP: | auch als Modul bezeichnet wird. Hier die Darstellung von Zyklus 1 als Teil-PAP: | ||
+ | {{: | ||
Zyklus 2 besteht aus der 32fachen zyklischen Wiederholung des Schreibens eines | Zyklus 2 besteht aus der 32fachen zyklischen Wiederholung des Schreibens eines | ||
Leerzeichens bei ebenfalls fortlaufender Erhöhung der Adresse X und der Kode- | Leerzeichens bei ebenfalls fortlaufender Erhöhung der Adresse X und der Kode- | ||
- | Zahl C. Da der Zyklus 2 an den abgeschlossenen Zyklus 1 anschliesst, kann die | + | Zahl C. Da der Zyklus 2 an den abgeschlossenen Zyklus 1 anschließt, kann die |
Variable L, nachdem ihr ein neuer Anfangswert zugeordnet wurde, erneut für das | Variable L, nachdem ihr ein neuer Anfangswert zugeordnet wurde, erneut für das | ||
Zählen der Zyklen-Anzahl benutzt werden: | Zählen der Zyklen-Anzahl benutzt werden: | ||
+ | |||
+ | {{: | ||
+ | |||
Mit der einmaligen Realisierung der Folge (Zyklus 1/Zyklus 2) haben wir erst das | Mit der einmaligen Realisierung der Folge (Zyklus 1/Zyklus 2) haben wir erst das | ||
Zeile 1510: | Zeile 1502: | ||
bereits aufgeführten Programm-Module Zyklus 1 und Zyklus 2 dargestellt werden: | bereits aufgeführten Programm-Module Zyklus 1 und Zyklus 2 dargestellt werden: | ||
+ | {{: | ||
Damit ist unser PAP soweit aufbereitet, | Damit ist unser PAP soweit aufbereitet, | ||
Zeile 1522: | Zeile 1515: | ||
Bei der eigentlichen Programmierung können wir die Vorteile nutzen, die uns das | Bei der eigentlichen Programmierung können wir die Vorteile nutzen, die uns das | ||
BASIC durch seine Dialogfähigkeit bietet. Das bedeutet für uns, dass wir unser | BASIC durch seine Dialogfähigkeit bietet. Das bedeutet für uns, dass wir unser | ||
- | Programm schrittweise | + | Programm schrittweise |
Wir wollen das wieder an unserem Programmbeispiel üben. Sicherheitshalber werden | Wir wollen das wieder an unserem Programmbeispiel üben. Sicherheitshalber werden | ||
Zeile 1539: | Zeile 1532: | ||
# L 100 BFF | # L 100 BFF | ||
- | geben wir dem Rechner zu verstehen, dass er in den Speicher adressraum | + | geben wir dem Rechner zu verstehen, dass er in den Speicheradressraum |
bis BFFH Daten einlagern soll. Nach dem Positionieren des Magnetbandes (optimal | bis BFFH Daten einlagern soll. Nach dem Positionieren des Magnetbandes (optimal | ||
ist hier ein Bandlängenzählwerk) und Einschalten der Wiedergabe erwarten wir den | ist hier ein Bandlängenzählwerk) und Einschalten der Wiedergabe erwarten wir den | ||
Zeile 1552: | Zeile 1545: | ||
Es ist z. B. möglich, dass durch Staubkörnchen zwischen Band und Tonkopf oder | Es ist z. B. möglich, dass durch Staubkörnchen zwischen Band und Tonkopf oder | ||
- | durch Kontaktfehler der übertragungsleitung | + | durch Kontaktfehler der Übertragungsleitung |
- | erkennt unser Rechner durch Kontrolle der übereinstimmung | + | erkennt unser Rechner durch Kontrolle der Übereinstimmung |
in einer Zeile mit den ebenfalls im Datensatz übermittelten Checksummen. | in einer Zeile mit den ebenfalls im Datensatz übermittelten Checksummen. | ||
Zeile 1568: | Zeile 1561: | ||
Prinzipiell ist es auch möglich, beim Auftreten von einzelnen Checksummenfehlern | Prinzipiell ist es auch möglich, beim Auftreten von einzelnen Checksummenfehlern | ||
mit dem D-Kommando den angegebenen Datenblock durch Vergleich mit der BASIC- | mit dem D-Kommando den angegebenen Datenblock durch Vergleich mit der BASIC- | ||
- | Interpreter-Liste nach rehlern | + | Interpreter-Liste nach Fehlern |
korrigieren. | korrigieren. | ||
Zeile 1613: | Zeile 1606: | ||
entgegenzutreten, | entgegenzutreten, | ||
Abschnitte 5.3.4. und 5.3.5. besonders gründlich zu studieren und anzuwenden. | Abschnitte 5.3.4. und 5.3.5. besonders gründlich zu studieren und anzuwenden. | ||
- | Sollte z. B. durch mehrfache Fehlerausschriften, | + | Sollte z. B. durch mehrfache Fehlerausschriften, |
- | Programdarstellung | + | Programmdarstellung |
- | durch Eingabe des LIST-Kommados | + | durch Eingabe des LIST-Kommandos |
Programmzeilen erfahren. | Programmzeilen erfahren. | ||
Zeile 1625: | Zeile 1618: | ||
50 L=0 | 50 L=0 | ||
- | Da die Variable L als Zähler dient, muss sie in jeder Pro- | + | Da die Variable L als Zähler dient, muss sie in jeder Programmschleife |
- | grammschleife | + | |
60 L=L+1 | 60 L=L+1 | ||
Zeile 1635: | Zeile 1627: | ||
70 POKE X,C | 70 POKE X,C | ||
- | Die Kode-Nr. und die Bildschirmadresse werden | + | Die Kode-Nr. und die Bildschirmadresse werden |
für die nächste Programmschleife um 1 erhöht: | für die nächste Programmschleife um 1 erhöht: | ||
Zeile 1642: | Zeile 1634: | ||
Auf diese neue Adresse schreiben wir ein Leerzeichen (Kode-Nr. 32) und erhöhen | Auf diese neue Adresse schreiben wir ein Leerzeichen (Kode-Nr. 32) und erhöhen | ||
- | anschliessend | + | anschließend |
100 POKE X,32 | 100 POKE X,32 | ||
110 X=X+1 | 110 X=X+1 | ||
- | Damit diese Befehlsfolge nach eimaligem | + | Damit diese Befehlsfolge nach einmaligem |
den bedingten Sprung IF..GOTO Als Abbruchbedingung wird der Stand unseres | den bedingten Sprung IF..GOTO Als Abbruchbedingung wird der Stand unseres | ||
Zählers L kontrolliert: | Zählers L kontrolliert: | ||
Zeile 1653: | Zeile 1645: | ||
120 IF L<16 GOTO 60 | 120 IF L<16 GOTO 60 | ||
- | Sind wir hier erfolgreich angelangt (zweckmässig | + | Sind wir hier erfolgreich angelangt (zweckmäßig |
Kontrolle des bisherigen Programms mit LIST), können wir das Teilprogramm | Kontrolle des bisherigen Programms mit LIST), können wir das Teilprogramm | ||
bereits durch Eingabe des Kommandos RUN starten und damit das Beschreiben der | bereits durch Eingabe des Kommandos RUN starten und damit das Beschreiben der | ||
Zeile 1675: | Zeile 1667: | ||
Wünschen wir über Bedienereingabe einen leeren Bildschirm, betätigen wir | Wünschen wir über Bedienereingabe einen leeren Bildschirm, betätigen wir | ||
- | gleichzeitig S4 und T mit anschliessendem | + | gleichzeitig S4 und T mit anschließendem |
- | Kommenn | + | Kommen |
ihn jetzt sofort umsetzen: | ihn jetzt sofort umsetzen: | ||
Zeile 1696: | Zeile 1688: | ||
</ | </ | ||
- | Dieser Befehl lässt sich später auf Wunsch wieder | + | Dieser Befehl lässt sich später auf Wunsch wieder |
können wir uns überzeugen, | können wir uns überzeugen, | ||
- | Zeilennumerierung | + | Zeilennummerierung |
Bei erneutem Starten des bisherigen Programms durch RUN werden jetzt die ersten | Bei erneutem Starten des bisherigen Programms durch RUN werden jetzt die ersten | ||
Zeile 1724: | Zeile 1716: | ||
wir zur Realisierung der Programmschleifen gleich noch die elegantere | wir zur Realisierung der Programmschleifen gleich noch die elegantere | ||
FOR...TO...NEXT-Anweisung benutzen, können wir durch Löschen und überschreiben | FOR...TO...NEXT-Anweisung benutzen, können wir durch Löschen und überschreiben | ||
- | einiger | + | einiger |
< | < | ||
Zeile 1749: | Zeile 1741: | ||
Maschinenprogramm, | Maschinenprogramm, | ||
Ausgangsprogramm. Es soll im folgenden komplett wiedergegeben werden (man | Ausgangsprogramm. Es soll im folgenden komplett wiedergegeben werden (man | ||
- | beachte die Ausführungezeit | + | beachte die Ausführungszeit |
< | < | ||
Zeile 1782: | Zeile 1774: | ||
Diese Erweiterungsbaugruppen sollen ebenfalls industriell gefertigt und im | Diese Erweiterungsbaugruppen sollen ebenfalls industriell gefertigt und im | ||
Handel angeboten werden. Dazu gehört ein Baugruppenträger mit Rückverdrahtung, | Handel angeboten werden. Dazu gehört ein Baugruppenträger mit Rückverdrahtung, | ||
- | die ausser | + | die außer |
Steckverbinderplätzen enthält. | Steckverbinderplätzen enthält. | ||
Zeile 1788: | Zeile 1780: | ||
Selbstbau elektronischer Baugruppen haben, werden sich ihre Erweiterungen | Selbstbau elektronischer Baugruppen haben, werden sich ihre Erweiterungen | ||
vielleicht selbst bauen. Dieser Selbstbau ist aber nur erfahrenen Elektronikern | vielleicht selbst bauen. Dieser Selbstbau ist aber nur erfahrenen Elektronikern | ||
- | anzuraten, da tiefgründiges Wissen und grosse | + | anzuraten, da tiefgründiges Wissen und große |
Weiterhin ist zu beachten, dass aus Kostengründen die Grundausbaustufe nur die | Weiterhin ist zu beachten, dass aus Kostengründen die Grundausbaustufe nur die | ||
unbedingt notwendigen Bauelemente enthält, die Systemsignale an den | unbedingt notwendigen Bauelemente enthält, die Systemsignale an den | ||
Zeile 1808: | Zeile 1800: | ||
==== 6.2. Speichererweiterungen ==== | ==== 6.2. Speichererweiterungen ==== | ||
- | Die Grundausbaustufe des MRB Z1013 besitzt | + | Die Grundausbaustufe des MRB Z1013 besitzt |
dem Monitorprogramm im Adressbereich F000H bis F7FFH und einen 1K Byte | dem Monitorprogramm im Adressbereich F000H bis F7FFH und einen 1K Byte | ||
umfassenden statischen RAM im Bereich EC00H bis EFFFH als BWS. Zusätzlich ist er | umfassenden statischen RAM im Bereich EC00H bis EFFFH als BWS. Zusätzlich ist er | ||
Zeile 1815: | Zeile 1807: | ||
Die letztgenannte Variante erfordert für die Nutzung des BASIC-Interpreters | Die letztgenannte Variante erfordert für die Nutzung des BASIC-Interpreters | ||
- | einen grösseren | + | einen größeren |
Achtung! Bei allen Erweiterungen ist zu beachten, dass die Belastbarkeit der | Achtung! Bei allen Erweiterungen ist zu beachten, dass die Belastbarkeit der | ||
Zeile 1821: | Zeile 1813: | ||
ist. | ist. | ||
- | ==== 6.3. Anschluss von Steüreinheiten | + | ==== 6.3. Anschluss von Steuereinheiten |
- | Für kleine | + | Für kleine |
- | Schnittstelle des PIO's zur Verfügung (PIO-Port A). Dieser | + | Schnittstelle des PIO's zur Verfügung (PIO-Port A). Dieser |
- | hat die ElAGrundadresse | + | hat die E/ |
Steckverbinder X4 zur Verfügung (siehe Anlage 6). Je nach Umfang der zu | Steckverbinder X4 zur Verfügung (siehe Anlage 6). Je nach Umfang der zu | ||
- | steürnden | + | steuernden |
- | bitgesteürte | + | bitgesteuerte |
- | auch den Prozess | + | auch den Prozess |
Sollte bei gewachsenen Anforderungen dieser 8 Bit breite Fort nicht ausreichen, | Sollte bei gewachsenen Anforderungen dieser 8 Bit breite Fort nicht ausreichen, | ||
kann zusätzlich mit den Spaltenauswahlleitungen der Tastatur eine Auswahl der | kann zusätzlich mit den Spaltenauswahlleitungen der Tastatur eine Auswahl der | ||
- | Signalqüllen | + | Signalquellen |
damit 10 Jeweils 8 Bit breite E/A-Ports ausgewählt werden, ohne dass | damit 10 Jeweils 8 Bit breite E/A-Ports ausgewählt werden, ohne dass | ||
zusätzlicher Dekodieraufwand notwendig ist. Beispiel: Es wird eine Information | zusätzlicher Dekodieraufwand notwendig ist. Beispiel: Es wird eine Information | ||
Zeile 1842: | Zeile 1834: | ||
Port. Da durch den Spaltendekoder 10 Spaltenleitungen aktiviert werden können, | Port. Da durch den Spaltendekoder 10 Spaltenleitungen aktiviert werden können, | ||
ist der Anschluss von 10 verschiedenen E/A-Ports am Steckverbinder X4 möglich. | ist der Anschluss von 10 verschiedenen E/A-Ports am Steckverbinder X4 möglich. | ||
- | Damit stehen einem Anwender ohne grossen zusätzhohen | + | Damit stehen einem Anwender ohne großen zusätzlichen |
Kommandoleitungen zur Verfügung, die nach eigenem Ermessen in Ein- und | Kommandoleitungen zur Verfügung, die nach eigenem Ermessen in Ein- und | ||
Ausgabeleitungen eingeteilt werden können. | Ausgabeleitungen eingeteilt werden können. | ||