001
07.01.2021, 15:17 Uhr
Creep
|
Die Doku sagt dazu:
Quellcode: | 4.26. Z80UNDOC
Da es von Zilog naturgemäß keine Syntaxvorgaben für die undokumentierten Befehle gibt und wohl auch nicht jeder den kompletten Satz kennt, ist es vielleicht sinnvoll, diese Befehle hier kurz aufzuzählen:
Wie auch beim Z380 ist es möglich, die Byte-Hälften von IX und IY einzeln anzusprechen. Im einzelnen sind dies folgende Varianten:
INC Rx LD R,Rx LD Rx,n DEC Rx LD Rx,R LD Rx,Ry ADD/ADC/SUB/SBC/AND/XOR/OR/CP A,Rx
Dabei stehen Rx bzw. Ry für IXL, IXU, IYL oder IYU. Zu beachten ist jedoch, daß in der LD Rx,Ry-Variante beide Register aus dem gleichen Indexregister stammen müssen.
Die Kodierung von Schiebebefehlen besitzt noch eine undefinierte Bitkombination, die als SLIA- oder SLS-Befehl zugänglich ist. SLIA/SLS funktioniert wie SLA, es wird jedoch eine Eins und nicht eine Null in Bit 0 eingeschoben. Dieser Befehl kann, wie alle anderen Schiebebefehle auch, noch in einer weiteren Variante geschrieben werden:
SLIA R,(XY+d)
Dabei steht R für ein beliebiges 8-Bit-Register (aber nicht eine Indexregisterhälfte...), und (XY+d) für eine normale indexregister-relative Adressierung. Das Ergebnis dieser Operation ist, daß das Schiebeergebnis zusätzlich ins Register geladen wird. Dies funktioniert auch bei den RES- und SET-Befehlen:
SET/RES R,n,(XY+d)
Des weiteren gibt es noch zwei versteckte I/O-Befehle:
IN (C) bzw. TSTI OUT (C),0
Deren Funktionsweise sollte klar sein. ACHTUNG! Es gibt keine Garantie dafür, daß alle Z80-Masken alle diese Befehle beherrschen, und die Z80-Nachfolger lösen zuverlässig Traps aus. Anwendung daher auf eigene Gefahr... |
-- - Privatnachrichten bitte per Email. Mein Postfach ist immer knapp vor Überlauf - |