Magic Disk 64

home to index to html: MD9403-KURSE-IRQ-KURS_5.2.html
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  auf-
gefü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 kom-
men hier nochmals vor, da sie  auch  mit
Adressierung  verwendbar sind. Die Spal-
ten der Tabelle stehen (von  links  nach
rechts)  für: "IMMediate", wenn der Ope-
rand  ein  konstanter  Wert  ist   ("LDA
#00"),  "ABSolut", für dirkete Speicher-
adressierung ("LDA $1000"),  "ABSolut,X"
("LDA $1000,X"), "ABSolut,Y", "ZeroPage"
("LDA $02"), "ZeroPage,X", "ZeroPage,Y",
Zeropage  indirekt-implizit "(zp,X)" und
Zeropage implizit-idirekt "(zp),Y". Alle
Zyklenangaben, die mit  einem  "*"  mar-
kiert  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  $10FF,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 eige-
nen  Tabelle  erscheinen  müssen, da sie
immer 2 Taktzyklen verbrauchen.  Es  sei
denn,  die vom Befehl abgefragte Beding-
ung trifft zu. In diesem Fall  wird  ein
weiterer,  dritter  Takt in Anspruch ge-
nommen.                                 
Das war es dann wieder für diesen Monat.
Im nächsten Kursteil werden wir uns wei-
terhin  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 Ra-
ster-Effekt dienen:  einer  Routine  zum
Abschalten  der  seitlichen  Ränder  des
Bildschirms.                            
                                    (ub)



Valid HTML 4.0 Transitional Valid CSS!