Schneider / Amstrad CPC Forum

Amstrad / Schneider CPC => Programmierung => Topic started by: oobdoo on 19. February 2015, 13:54:51

Title: Block-I7O-Operationen
Post by: oobdoo on 19. February 2015, 13:54:51
Im CPC Systembuch (gibts hier als PDF) steht auf Seite 625, das der CPC keine Block-I/O-Operationen anwenden kann. Wie ist denn das genauer zu verstehen?
Title: Re: Block-I7O-Operationen
Post by: TFM on 19. February 2015, 17:51:10
Bei Block I/O Operationen werden Bocks von Daten an eine durch Register C adressierte I/O Schnittstelle geschickt. Die Anzahl der Bytes steht in Register B.

Bei vielen Z80 Computern wird I/O nur über 8 Bit abgewickelt, also reicht Register C zur Adressierung.

Beim CPC wird aber 16 Bit I/O verwendet. Also: Es werden 8 Bit Daten über eine 16 Bit I/O Adresse geschickt. Dabei dienen B und C als 16 Bit Adresse.

Beispiel: LD BC,&7FC0 adressiert das Gate Array (&7F) und selektiert das Standard-RAM (&C0). Nun reicht ein OUT (C),C um den Wert aus Register C and die I/O Adresse von BC zu schicken.

Was der CPC schon kann ist aber z.B. INI (nur nicht INIR).
Bei INI muss anschließend einfach das B Register angepasst werden.

16 Bit I/O hat Vor- und Nachteile. Vorteil ist, dass man mehr Peripherie anschließen kann. Nachteil ist, dass es u. U. etwas langsamer ist.