Das Schneider CPC Systembuch

Das Innenleben der CPC-Rechner

Der FDC 765

Die Besonderheiten des FDC 765 im Schneider CPC

Wie Die ICs im Überblick: Der CRTC HD 6845
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der CRTC HD 6845
Die Bildausgabe: Der CRTC HD 6845
CRTC
und Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
CPU
ist auch der Floppy-Controller Die ICs im Überblick: Der FDC 765FDC 765 im Schneider CPC teilweise recht ungewöhnlich eingesetzt.

FAULT

Durch die Beschaltung der Doppelfunktions-Anschlüsse FRES/STEP und Die Besonderheiten des FDC 765 im Schneider CPC: FAULTFAULT/TRK0 kann nie ein Fehler-Signal von der Einleitung: MassenspeicherFloppy zum Controller gelangen. Verfügt Anhang: Die Floppydie Floppy aber trotzdem über ein Fehler-Flip-Flop, wird dieses bei jedem Schreib/Lesezugriff Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
des FDC
zurückgesetzt.

Terminal Count

Der Eingang Erklärungen zu den Anschlussbezeichnungen: TC - Terminal CountTC (Terminal Count) ist mit Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: Reset
Erklärung zu den Anschluss-Bezeichnungen: RESET
Erklärung der Anschlussbelegung: Reset
Erklärung zu den Bezeichnungen: RESET
Erklärungen zu den Anschlussbezeichnungen: RESET
Erläuterung zu den Anschlüssen 40 bis 45: 41 - RESET (0)
RESET
zusammengeschaltet. Dadurch ist er vom laufenden Programm nicht ansprechbar, und kann prinzipiell als unbeschaltet betrachtet werden.

Dieser Eingang wird jedoch benötigt, um Sektor-Schreib- und Lesezugriffe Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
des FDC
abzubrechen. Ohne einen TC-Impuls macht Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
der FDC
automatisch mit dem nächsten Sektor weiter und führt sogenannte Multi-Sektor-Reads oder -Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: RD und WR - read und write
Erklärung zu den Anschluss-Bezeichnungen: WR - Write
Writes
aus.

Für Die Abteilungen des Betriebssystems: AmsdosAmsdos wurde das Problem so gelöst, dass die in jedem Befehl zu programmierende höchste Das Identifikationsfeld in jedem Sektor: 3. SektornummerSektornummer der Spur dem zu lesenden Sektor gleichgesetzt wird. Der Controller liest den angegebenen Sektor, erhält keinen TC-Impuls und will mit dem darauffolgenden Sektor weitermachen. Dabei stellt er aber fest, dass er den programmierten 'letzten Sektor' überschreitet und bricht den Befehl ab.

In der Result-Phase (Programmierung des FDC 765: 3. Ergebnisphase:
&X0ms00010 - ganze Spur lesen (READ TRACK): Ergebnisphase:
&X00000100 - Statusregister 3 abfragen (SENSE DRIVE STATE): Ergebnisphase:
&Xtm000101 - Sektor(en) schreiben (WRITE SECTOR): Ergebnisphase:
&Xtms00110 - Sektor(en) lesen (READ SECTOR): Ergebnisphase:
&X00001000 - Statusregister 0 abfragen (SENSE INTERRUPT STATE): Ergebnisphase:
&Xtm001001 - gelöschte Sektoren schreiben (WRITE DELETED SECTOR): Ergebnisphase:
&X0m001010 - Sektor-ID lesen (READ SECTOR ID): Ergebnisphase
&Xtms01100 - gelöschte Sektoren lesen (READ DELETED SECTOR): Ergebnisphase:
&X0m001101 - eine Spur formatieren (FORMAT TRACK): Ergebnisphase:
&Xtms10001 - Sektor(en) testen (SCAN EQUAL): Ergebnisphase:
&Xtms11001 - Sektor(en) testen (SCAN LOW OR EQUAL): Ergebnisphase:
&Xtms11101 - Sektor(en) testen (SCAN HIGH OR EQUAL): Ergebnisphase:
Ergebnisphase
) meldet Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
der FDC
dann im Statusregister 0 den Der Linien-Algorithmus: Fehler 3Fehler 'Befehl abgebrochen'. Die Port B - Input: &F5xx: Bits 1, 2 und 3:
Port C - Output: &F6xx: Bit 6 und 7:
Bits 7 und
6 enthalten den den Wert &X01.

Im Statusregister 1 wird der Der Linien-Algorithmus: Fehler 3Fehler näher spezifiziert: Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
7 ist gesetzt (END OF TRACK) womit gerade der beschriebene Der Linien-Algorithmus: Fehler 3Fehler angezeigt wird.

Dieser Der Linien-Algorithmus: Fehler 3Fehler tritt nur beim Befehl 'Sektor ID lesen' nicht auf. Dann liest Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
der FDC
nur die nächste erreichbare Sektor-ID auf der Diskette und stoppt auch ohne TC-Impuls. Ausgenommen sind natürlich auch solche Befehle wie 'Recalibrate', 'Statusregister 0 lesen' o. Ae., die nicht auf die Diskette zugreifen.

INT

Der Interrupt-Ausgang ist tatsächlich nirgendwo angeschlossen. Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
Der FDC
erzeugt aber bei 4 verschiedenen Gelegenheiten einen Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupt:

  1. Für jedes zu übertragende Datentypen: Bytes
    Datenbreite: Bytes
    Byte
    in der Programmierung des FDC 765: 2. Ausführungsphase:
    &X0ms00010 - ganze Spur lesen (READ TRACK): Ausführungsphase:
    &Xtm000101 - Sektor(en) schreiben (WRITE SECTOR): Ausführungsphase:
    &Xtms00110 - Sektor(en) lesen (READ SECTOR): Ausführungsphase:
    &X00000111 - Spur 0 suchen (RECALIBRATE): Ausführungsphase:
    &Xtm001001 - gelöschte Sektoren schreiben (WRITE DELETED SECTOR): Ausführungsphase:
    &X0m001010 - Sektor-ID lesen (READ SECTOR ID): Ausführungsphase:
    &Xtms01100 - gelöschte Sektoren lesen (READ DELETED SECTOR): Ausführungsphase:
    &X0m001101 - eine Spur formatieren (FORMAT TRACK): Ausführungsphase:
    &X00001111 - Spur suchen (SEEK): Ausführungsphase:
    &Xtms10001 - Sektor(en) testen (SCAN EQUAL): Ausführungsphase:
    &Xtms11001 - Sektor(en) testen (SCAN LOW OR EQUAL): Ausführungsphase:
    &Xtms11101 - Sektor(en) testen (SCAN HIGH OR EQUAL): Ausführungsphase:
    Ausführungsphase
  2. Zu Beginn der Programmierung des FDC 765: 3. Ergebnisphase:
    &X0ms00010 - ganze Spur lesen (READ TRACK): Ergebnisphase:
    &X00000100 - Statusregister 3 abfragen (SENSE DRIVE STATE): Ergebnisphase:
    &Xtm000101 - Sektor(en) schreiben (WRITE SECTOR): Ergebnisphase:
    &Xtms00110 - Sektor(en) lesen (READ SECTOR): Ergebnisphase:
    &X00001000 - Statusregister 0 abfragen (SENSE INTERRUPT STATE): Ergebnisphase:
    &Xtm001001 - gelöschte Sektoren schreiben (WRITE DELETED SECTOR): Ergebnisphase:
    &X0m001010 - Sektor-ID lesen (READ SECTOR ID): Ergebnisphase
    &Xtms01100 - gelöschte Sektoren lesen (READ DELETED SECTOR): Ergebnisphase:
    &X0m001101 - eine Spur formatieren (FORMAT TRACK): Ergebnisphase:
    &Xtms10001 - Sektor(en) testen (SCAN EQUAL): Ergebnisphase:
    &Xtms11001 - Sektor(en) testen (SCAN LOW OR EQUAL): Ergebnisphase:
    &Xtms11101 - Sektor(en) testen (SCAN HIGH OR EQUAL): Ergebnisphase:
    Ergebnisphase
  3. Sobald ein SEEK oder RECALIBRATE beendet wurde
  4. Wenn sich das READY-Signal eines Laufwerks ändert

Er erwartet in jedem Fall, dass die Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
CPU
darauf reagiert! Nun ist der Interrupt-Ausgang aber nicht angeschlossen, mithin ist diese Forderung nicht so ohne weiteres zu erfüllen.

Fall 1 und 2 sind leicht zu behandeln. Die Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
CPU
hat eine Datenübertragung angeleiert und fragt nun ständig im Haupt-Statusregister nach, ob ein Datentypen: Bytes
Datenbreite: Bytes
Byte
übergeben werden muss (erkennbar an Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
7 = Request for Master). Außerdem kann sie an Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
5 (Execution Die Kodierung der Tintennummern in den Bildschirm-Bytes: Mode 2:
Die Kodierung der Tintennummern in den Bildschirm-Bytes: Mode 1:
Die Kodierung der Tintennummern in den Bildschirm-Bytes: Mode 0:
Mode
) unterscheiden, ob ein Datentypen: Bytes
Datenbreite: Bytes
Byte
noch aus dem zu lesenden Sektor, oder bereits aus der Result-Phase stammt.

Fall 3 kann entweder so behandelt werden, dass die Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
CPU
so lange wartet, bis sie durch Lesen des Statusregisters 0 (Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
5 = SEEK END) erkennt, dass der Befehl abgeschlossen ist, oder man setzt ein Die Z80: Wirkung der Z80-Befehle auf die FlagsFlag, und fügt diese Warteschleife erst vor dem nächsten Lese- oder Schreibzugriff ein.

Die Abteilungen des Betriebssystems: AmsdosAmsdos speichert in einer System-Variable die aktuelle Spurnummer (zusätzlich zum Die ICs im Überblick: Der FDC 765FDC, zusätzlich zum Einleitung: MassenspeicherFloppy-Laufwerk, na, wenn sich da mal keiner verzählt) und ruft nach jedem SEEK-Kommando eine genau berechnete Warteschleife auf, um danach das Interrupt-Statusregister zu lesen.

Fall 4 ist am schwierigsten: Das Ready-Signal der Einleitung: MassenspeicherFloppy kann sich praktisch jederzeit ändern. Entweder, wenn der Anwender eine Diskette einlegt oder herausnimmt, oder auch, wenn Die Abteilungen des Betriebssystems: AmsdosAmsdos den Laufwerksmotor startet oder stoppt.

Am sinnvollsten ist hierbei, vor jedem Zugriff auf Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
den FDC
Programmierung des FDC 765: Das Statusregister 0
Programmierung des FDC 765: Das Statusregister 1
Programmierung des FDC 765: Das Statusregister 2
Programmierung des FDC 765: Das Statusregister 3
Die Register des FDC: Das Statusregister 0
Die Register des FDC: Das Statusregister 1
Die Register des FDC: Das Statusregister 2
Die Register des FDC: Das Statusregister 3
das Statusregister
0 zu lesen. Liegt nichts vor, quittiert das Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
der FDC
mit einem 'Die Z80: Illegalsillegal Befehls-Elemente: Commandscommand', die Port B - Input: &F5xx: Bits 1, 2 und 3:
Port C - Output: &F6xx: Bit 6 und 7:
Bits 7 und
6 sind in der Kombination &X10 gesetzt.

Sonst ist entweder Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
5 gesetzt (Seek End) oder man kann an Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
3 erkennen, ob sich der Ready-Status des Laufwerkes geändert hat.

Da es zu jedem Laufwerk ein Statusregister gibt, ist es sinnvoll, das Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
erneut abzufragen, wenn man etwas anderes als 'Die Z80: Illegalsillegal Befehls-Elemente: Commandscommand' erhielt.

US1

Die beiden möglichen Laufwerke am Amsdos-Controller werden nur über die Leitung US0 unterschieden. Die Besonderheiten des FDC 765 im Schneider CPC: US1US1 ist nicht angeschlossen.

Das führt dazu, dass beispielsweise eine Änderung des Ready-Signals an Laufwerk Operationen: BD5B / 349A / 349A: FLO SUBA (US0 = 0 und Die Besonderheiten des FDC 765 im Schneider CPC: US1US1 = 0) für Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
den FDC
so aussieht, als würde sich der Ready-Zustand auch bei Laufwerk C ändern (Die Besonderheiten des FDC 765 im Schneider CPC: US1US1 = 1 und US0 = 0). Deswegen muss man Programmierung des FDC 765: Das Statusregister 0
Programmierung des FDC 765: Das Statusregister 1
Programmierung des FDC 765: Das Statusregister 2
Programmierung des FDC 765: Das Statusregister 3
Die Register des FDC: Das Statusregister 0
Die Register des FDC: Das Statusregister 1
Die Register des FDC: Das Statusregister 2
Die Register des FDC: Das Statusregister 3
das Statusregister
0 meist zwei mal lesen. Die untersten drei Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bits
dieses Registers zeigen dabei immer an, auf welches Laufwerk sich die Informationen in den restlichen Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bits
beziehen.

FDC - Praxis

Wem die theoretischen Ausführungen bis hier etwas zu trocken waren, für den ist das folgende Programm gedacht. Es zeigt, dass man auch von Einleitung: BASIC
Anhang: Basic
Basic
aus schon sehr viele Die Fließkomma-Routinen: FunktionenFunktionen Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
des FDC
ansprechen kann. Wenn man die Versuche hier nicht gerade mit eingelegter Lieblingsdiskette macht, kann eigentlich nichts zerstoert werden. Etwas problematisch ist es allerdings, ein SEEK-Kommando zu Spuren ab 43 aufwärts zu starten. Hier macht der Schrittmotor etwas Krach, weil er dann in eine mechanische Sperre läuft.

Das Programm arbeitet nur mit Drive Operationen: BD5B / 349A / 349A: FLO SUBA, kann aber leicht erweitert werden.

Die Menü-Option z (result phase) ist so organisiert, dass automatisch alle noch anstehenden Datentypen: Bytes
Datenbreite: Bytes
Bytes
einer Programmierung des FDC 765: 3. Ergebnisphase:
&X0ms00010 - ganze Spur lesen (READ TRACK): Ergebnisphase:
&X00000100 - Statusregister 3 abfragen (SENSE DRIVE STATE): Ergebnisphase:
&Xtm000101 - Sektor(en) schreiben (WRITE SECTOR): Ergebnisphase:
&Xtms00110 - Sektor(en) lesen (READ SECTOR): Ergebnisphase:
&X00001000 - Statusregister 0 abfragen (SENSE INTERRUPT STATE): Ergebnisphase:
&Xtm001001 - gelöschte Sektoren schreiben (WRITE DELETED SECTOR): Ergebnisphase:
&X0m001010 - Sektor-ID lesen (READ SECTOR ID): Ergebnisphase
&Xtms01100 - gelöschte Sektoren lesen (READ DELETED SECTOR): Ergebnisphase:
&X0m001101 - eine Spur formatieren (FORMAT TRACK): Ergebnisphase:
&Xtms10001 - Sektor(en) testen (SCAN EQUAL): Ergebnisphase:
&Xtms11001 - Sektor(en) testen (SCAN LOW OR EQUAL): Ergebnisphase:
&Xtms11101 - Sektor(en) testen (SCAN HIGH OR EQUAL): Ergebnisphase:
Ergebnisphase
eingelesen und angezeigt werden. In Zeile 1030 sieht man, dass dazu ständig das Haupt-Statusregister gelesen wird: Die Port C - Output: &F6xx: Bits 0 bis 3:Bits 0 bis 3 werden ausgeblendet (FNs AND &F0) und dann getestet, ob die restlichen Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bits
so gesetzt sind, dass Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
der FDC
ein Datentypen: Bytes
Datenbreite: Bytes
Byte
aus der Result-Phase abgeben will: &Der Zeichensatz des Schneider CPC: &D0 = 208D0 = &X11010000.

Option Die verwendeten Abkürzungen bedeuten: x:x (trow away) macht Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
den FDC
wieder frei, wenn man sich einmal verfranzt hat: In Zeile 1040 wird einfach das Datenregister so lange gelesen, bis das Haupt-Statusregister anzeigt, dass Die ICs im Überblick: Der FDC 765
Das Innenleben der CPC-Rechner: Der FDC 765
der FDC
geneigt ist, wieder einen Befehl entgegenzunehmen. Es ist dabei ungefaehrlich, auch dann ein Datentypen: Bytes
Datenbreite: Bytes
Byte
vom Die ICs im Überblick: Der FDC 765FDC zu lesen, wenn dieser selbst eins vom Prozessor erwartet. Die vom Die ICs im Überblick: Der FDC 765FDC angezeigte Datenrichtung (Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
6 im Haupt-Statusregister) wird in dieser Routine einfach ignoriert.

  1 ' ***** Die Besonderheiten des FDC 765 im Schneider CPC: FDC - PraxisFDC - Praxis *****
  2 ' by G.Woigk  Erklärung zu den Anschlüssen: Vcc und Vss
Erklärung zu den Anschluss-Bezeichnungen: Vcc und Vss
vs
. 27.03.86 3 ' 10 Die Kodierung der Tintennummern in den Bildschirm-Bytes: Mode 2:
Die Kodierung der Tintennummern in den Bildschirm-Bytes: Mode 1:
Die Kodierung der Tintennummern in den Bildschirm-Bytes: Mode 0:
MODE
2 20 DEF FNs=INP(&Die Register des FDC: Das Haupt-Statusregister - INP(&FB7E)FB7E) ' Haupt-Statusregister einlesen 30 DEF FNd=INP(&FB7F) ' Datenregister einlesen 35 DEF FNb$(z)=BIN$(z,8) ' Ausdruck eines Datentypen: Bytes
Datenbreite: Bytes
Bytes
als 8 Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bits
40 d=&FB7F ' Adresse Datenregister 50 m=&FA7F ' Adresse Motor 54 ' 55 ' *** MENUE *** 56 ' 60 PRINT "r - recalibrate 70 PRINT "t - track 80 PRINT "s - steuerregister 90 PRINT "1 - motor on 100 PRINT "0 - motor off 110 PRINT "i - statusregister 0 120 PRINT "z - result phase 130 PRINT "Die verwendeten Abkürzungen bedeuten: x:x - throw away 140 PRINT "d - statusregister 3 150 PRINT "? - ID lesen 490 ' 491 ' *** Menüprogramm *** 492 ' 500 WINDOW 41,80,1,25 510 i$=INKEY$:IF i$="" THEN 510 520 bef=INSTR("rts10izxd?",LOWER$(i$)) 530 ON bef GOSUB 1070,1080,1020,1010,1000,1050,1030,1040,1060,1090 540 GOTO 510 590 ' 591 ' *** Aufrufbare Grundlagen: UnterprogrammeUnterprogramme *** 592 ' 1000 OUT m,0:RETURN ' 0 - Motor aus 1010 OUT m,1:RETURN ' 1 - Motor ein 1020 PRINT "#";FNb$(FNs):RETURN ' s - Steuerregister 1025 ' 1030 IF (FNs AND &Der Zeichensatz des Schneider CPC: &F0 = 240F0)=&Der Zeichensatz des Schneider CPC: &D0 = 208D0 THEN PRINT">";FNb$(FNd):GOTO 1030 ' z - result phase 1040 WHILE (FNs AND &Der Zeichensatz des Schneider CPC: &F0 = 240F0)<>&80:i=FNd:WEND:RETURN ' Die verwendeten Abkürzungen bedeuten: x:x - trow away 1050 GOSUB 1040:PRINT"status 0":OUT d,8:GOTO 1030 ' i - Statusreg. 0 1060 GOSUB 1040:PRINT"status 3":OUT d,4:OUT d,0:GOTO 1030 ' d - Statusreg. 3 1065 ' 1070 GOSUB 1040:OUT d,7:OUT d,0:RETURN ' Spur 0 1080 GOSUB 1040:INPUT "track ",t:OUT d,15:OUT d,0:OUT d,t:RETURN ' Spur suchen 1090 GOSUB 1040:PRINT"ID":OUT d,74:OUT d,0:RETURN ' ID lesen

Valid HTML   Valid CSS