Magic Disk 64

home to index to text: MD9403-KURSE-IRQ-KURS_5.2.txt
3) DIE ZYKLENTABELLE                    

Kommen wir nun noch zu der Tabelle mit den Zyklendauern der einzelnen Befehle.
Da viele darunter mit unterschiedlichen Adressierungsarten verwendbar sind, habe ich Ihnen zwei Einzeltabellen aufgeführt, in denen ähnliche Befehle zu Gruppen zusammengefasst wurden. Kommen wir hierbei zunächst zu den impliziten Befehlen. Sie bestehen lediglich aus einem Befehlswort und benötigen keinen Operanden:

Befehl Zyklen                           
 ASL     2                              
 LSR     2                              
 ROL     2                              
 ROR     2                              
 CLC     2                              
 SEC     2                              
 CLD     2                              
 SED     2                              
 CLI     2                              
 SEI     2                              
 CLV     2                              
 NOP     2                              
 RTS     6                              
 RTI     6                              
 BRK     7                              
 TAX     2                              
 TAY     2                              
 TXA     2                              
 TYA     2                              
 TXS     2                              
 TSX     2                              
 PLA     4                              
 PHA     3                              
 PLP     4                              
 PHP     3                              
 INX     2                              
 DEX     2                              
 INY     2                              
 DEY     2                              

Es folgen nun die Befehle, die entweder direkt, oder über Speicheradressen eine Operation mit den Prozessorregistern durchführen. Die Bitschiebebefehle kommen hier nochmals vor, da sie auch mit Adressierung verwendbar sind. Die Spalten der Tabelle stehen ( von links nach rechts) für:" IMMediate", wenn der Operand ein konstanter Wert ist (" LDA #00")," ABSolut", für dirkete Speicheradressierung (" LDA $1000")," ABSolut, X"(" LDA $1000, X")," ABSolut, Y"," ZeroPage"(" LDA $02")," ZeroPage, X"," ZeroPage, Y", Zeropage indirektimplizit "( zp, X)" und Zeropage implizitidirekt "( zp), Y" . Alle Zyklenangaben, die mit einem "*" markiert sind verlängern sich um einen Taktzyklus, wenn bei dieser Adressierung eine Bereichsüberschreitung stattfindet, was bedeutet, daß wenn die Summe des Offsetregisters und des Basiswertes das High-Byte überschreitet, ein Takt mehr benötigt wird, als angegeben. Dies ist z. B. bei dem Befehl " LDA $10 FF, X" der Fall. Dann, wenn nämlich im X-Register ein Wert größer oder gleich 1 steht:

Bef Imm Abs Abs Abs ZP ZP ZP (,X) (,Y)  
            ,X  ,Y    ,X  ,Y            
BIT  -   4   -   -  3  -  -   -    -    
CPX  2   4   -   -  3  -  -   -    -    
CPY  2   4   -   -  3  -  -   -    -    
CMP  2   4   4*  4* 3  4  -   6    5*   
ADC  2   4   4*  4* 3  4  -   6    5*   
SBC  2   4   4*  4* 3  4  -   6    5*   
AND  2   4   4*  4* 3  4  -   6    5*   
ORA  2   4   4*  4* 3  4  -   6    5*   
EOR  2   4   4*  4* 3  4  -   6    5*   
INC  -   6   7   -  5  6  -   -    -    
DEC  -   6   7   -  5  6  -   -    -    
LDA  2   4   4*  4* 3  4  -   6    5*   
LDX  2   4   -   4* 3  -  4   -    -    
LDY  2   4   4   -  3  4* -   -    -    
STA  -   4   5   5  3  4  -   6    6    
STX  -   4   -   -  3  -  4   -    -    
STY  -   4   -   -  3  4  -   -    -    
ASL  -   6   7   -  5  6  -   -    -    
LSR  -   6   7   -  5  6  -   -    -    
ROL  -   6   7   -  5  6  -   -    -    
ROR  -   6   7   -  5  6  -   -    -    
JMP  -   3   -   -  -  -  -   -    -    
JSR  -   6   -   -  -  -  -   -    -    

Zudem kennt der JMP-Befehl auch noch die indirekte Adressierung, über einen Low-/ High-Bytezeiger ( z. B." JMP ($ A000)"), der 5 Taktzyklen verbraucht.
Es fehlen jetzt nur noch die Branch-Befehle, die jedoch nicht in einer eigenen Tabelle erscheinen müssen, da sie immer 2 Taktzyklen verbrauchen. Es sei denn, die vom Befehl abgefragte Bedingung trifft zu. In diesem Fall wird ein weiterer, dritter Takt in Anspruch genommen.
Das war es dann wieder für diesen Monat.
Im nächsten Kursteil werden wir uns weiterhin ein wenig mit Timingproblemen beschäftigen müssen, und uns ansehen, wie man IRQs " glättet" . Dies soll uns dann als Grundlage für den nächsten Raster- Effekt dienen: einer Routine zum Abschalten der seitlichen Ränder des Bildschirms.

                                    (ub)

Valid HTML 4.0 Transitional Valid CSS!