Das Schneider CPC Systembuch

Die Abteilungen des Betriebssystems

Der Kernel - Software-Interrupts

Die Chains des Kernel

Der MAIN FIRMWARE JUMPBLOCK: KERNEL
Die Firmware des Schneider CPC: KERNEL
Kernel
stellt für den Anwender direkt drei Trees: ListenListen bereit, in die man Datenblöcke eintragen kann, um so Software-Interrupts zu programmieren. Diese Trees: ListenListen unterscheiden sich hauptsächlich darin, wann sie vom MAIN FIRMWARE JUMPBLOCK: KERNEL
Die Firmware des Schneider CPC: KERNEL
Kernel
berücksichtigt werden.

Die FAST TICKER Datenspeicherung und Datenstrukturen: ChainsCHAIN wird mit jedem Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupt, den Speicher und Peripherie: Die ULA
Die Bildausgabe: Die ULA
die ULA
erzeugt, überprüft. Hiermit können Der Kernel - Software-Interrupts: EventsEvents programmiert werden, die 300 mal pro Sekunde behandelt werden müssen. Der 'fast ticker' ist zwar der schnellste, verbraucht deshalb aber auch die meiste Rechenzeit. Drei oder vier längere Routinen auf dem Fast Ticker eingehängt, können das Hauptprogramm mitunter ganz zum Stillstand bringen.

Zum Einhängen eines Datenblocks in der 'fast ticker Datenspeicherung und Datenstrukturen: Chainschain' kann man den Vektor &KERNEL: BCE3: KL ADD FAST TICKERBCE3 KL ADD FAST TICKER benutzen. In HL muss man dabei einen Zeiger auf den Datenblock, den 'fast ticker Die Speicherkonfiguration im Schneider CPC: Blockblock' übergeben. Dieser ist wie folgt aufgebaut:

    Aufbau des 'fast ticker Die Speicherkonfiguration im Schneider CPC: Blockblocks':
    --------------------------------
    Datentypen: Bytes
Datenbreite: Bytes
Byte
0,1 --> Platz für den Hangelpointer in der 'fast ticker Datenspeicherung und Datenstrukturen: Chainschain'. Datentypen: Bytes
Datenbreite: Bytes
Byte
2ff --> Der BCEF: KL INIT EVENT: EventblockEventblock.

Eine weitere Trees: ListenListe ist die FRAME FLYBACK Datenspeicherung und Datenstrukturen: ChainsCHAIN, die mit jedem Strahl-Hochlauf auf dem Monitor dran ist. Das ist, je nach Verkaufsland, 50 oder 60 mal in der Sekunde der Fall. In Europa, wo man überall mit einer Netzfrequenz von 50 Hz arbeitet, schreiben die verschiedenen Fernseh-Normen (z.LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
. Speicher und Peripherie: Das PAL im CPC 6128PAL oder SECAM) auch eine Bildfrequenz von 50 Hz vor. In Amerika arbeitet man mit der NTSC-Norm und 60 Hertz.

Diese Der Kernel - Software-Interrupts: Interrupt-QuellenInterrupt-Quelle ist für alle Aktionen auf dem Bildschirm gedacht, die, würden sie sichbar, ein Flackern oder andere Stoerungen verursachen würden.

So ist in dieser Trees: ListenListe standardmäßig das Farben-Blinken des MAIN FIRMWARE JUMPBLOCK: SCREEN PACK
Die Firmware des Schneider CPC: SCREEN PACK
Screen Packs
eingehängt. Neu programmierte INK-Farb-Zuordnungen werden ebenfalls erst mit dem nächsten Strahlhochlauf in Speicher und Peripherie: Die ULA
Die Bildausgabe: Die ULA
die ULA
geschrieben.

Speziell in Spielen mit schnell bewegter Sprite- (oder Shape-) Grafik werden die Figuren immer während der Austastluecke bewegt. Ein gängiger Algorithmus für Sprites ist nämlich:

Sprite platzieren:
    Grafik-Information des dadurch verdeckten Bild-Ausschnittes retten,
    dann Sprite in den Bildschirm malen.
Sprite entfernen:
    Gerettete Grafik-Information in den Bildschirm zurück kopieren.
Sprite bewegen:
    Sprite entfernen. Koordinaten verschieben. Sprite platzieren.

Um ein Sprite zu bewegen, wird kurzzeitig der vedeckte Hintergrund im Video-RAM restauriert. Der soll natürlich nicht zu sehen sein, weil sonst die Figur flimmern würde. Deshalb werden diese Manipulationen möglichst vorgenommen, wenn kein Bild dargestellt wird, was in der Austastlücke der Fall ist. (Es gibt zwar auch intelligentere Algorithmen, bei denen es nicht zu Flimmer-Effekten kommt, die sind den meisten Spiele-Programmierern aber scheinbar zu kompliziert.)

Um einen Die Speicherkonfiguration im Schneider CPC: BlockBlock einzuhängen, kann man den Vektor &KERNEL: BCDA: KL ADD FRAME FLYBCDA KL ADD FRAME FLY benutzen. Der 'frame flyback Die Speicherkonfiguration im Schneider CPC: Blockblock' ist dabei genauso aufgebaut, wie der 'fast ticker Die Speicherkonfiguration im Schneider CPC: Blockblock':

    Aufbau des 'frame flyback Die Speicherkonfiguration im Schneider CPC: Blockblocks':
    ----------------------------------
    Datentypen: Bytes
Datenbreite: Bytes
Byte
0,1 --> Platz für den Hangelpointer in der 'frame blyback Datenspeicherung und Datenstrukturen: Chainschain'. Datentypen: Bytes
Datenbreite: Bytes
Byte
2ff --> Der BCEF: KL INIT EVENT: EventblockEventblock.

Am komfortabelsten ist die TICKER Datenspeicherung und Datenstrukturen: ChainsCHAIN, die allerdings nur 50 mal pro Sekunde abgearbeitet wird. Während in den anderen Trees: ListenListen ohne zusätzlichen Aufwand nur solche Ereignisse programmiert werden können, die immer und bis zum Sankt Nimmerleinstag immer wieder 'angestoßen' werden ('Der Key Manager: Repeatrepeater'), kann man bei der TICKER Datenspeicherung und Datenstrukturen: ChainsCHAIN auch sogenannte 'one shots', also einmalige Ereignisse definieren.

Einleitung: BASIC
Anhang: Basic
Basic
benutzt für EVERY und AFTER ausschließlich die TICKER Datenspeicherung und Datenstrukturen: ChainsCHAIN, was man auch daran erkennen kann, dass die Zeiten hier in 50stel Sekunden angeben werden müssen.

Über den Vektor &KERNEL: BCE9: KL ADD TICKERBCE9 KL ADD TICKER kann man einen 'ticker Die Speicherkonfiguration im Schneider CPC: Blockblock' in die 'ticker Datenspeicherung und Datenstrukturen: Chainschain' einhängen. Dieser Die Speicherkonfiguration im Schneider CPC: BlockBlock ist etwas anders aufgebaut, als die beiden anderen. Beim Aufruf des Vektors muss man im DE- und BC-Register die gewünschten Werte für den Count Down (Start-Verzögerung) und Reload Count (Nachladewert für 'Der Key Manager: Repeatrepeater') übergeben:

    Aufbau eines 'ticker Die Speicherkonfiguration im Schneider CPC: Blockblocks':
    -----------------------------
    Datentypen: Bytes
Datenbreite: Bytes
Byte
0,1 --> Platz für den Hangelpointer in der 'ticker Datenspeicherung und Datenstrukturen: Chainschain'. Datentypen: Bytes
Datenbreite: Bytes
Byte
2,3 --> Count Down = Zähler für die Tickerzahl bis zum ersten Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupt. Datentypen: Bytes
Datenbreite: Bytes
Byte
4,5 --> Reload Count = Nachladewert für weitere Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupts. Bei &0000 wird nur ein Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupt erzeugt. Datentypen: Bytes
Datenbreite: Bytes
Byte
6ff --> Der BCEF: KL INIT EVENT: EventblockEventblock.

Valid HTML   Valid CSS