Z80380 CPU USER'S MANUAL PREFACE Thank you for your interest in the Z380TM Central Processing Unit (CPU) and its associated family of products. This Technical Manual describes programming and operation of the Z380TM SuperintegrationTM Core CPU, which is found in the Z380 Microprocessor Unit (MPU), and products built around Z380TM CPU core. This Z380 User's Manual consists of the following Sections: DC-8297-03 1. Z380TM Architectural Overview Chapter 1 is an introductory section covering the key features and giving an overview of the architecture of the device. 2. Address Spaces Chapter 2 explains the address spaces the Z380 CPU can handle. Also, this chapter includes a brief description of the on-chip registers. 3. Native/Extended Mode, Word/Long Word Mode of Operation, and Decoder Directives This chapter provides a detailed explanation on the Z380's unique features, operation modes, and the Decoder Directives. 4. Addressing Modes and Data Types Chapter 4 describes the Addressing mode and data types which the Z380 can handle. 5. Instruction Set Chapter 5 contains an overview of the instruction set; as well as a detailed instruction-by-instruction description in alphabetical order. 6. Interrupts and Traps Chapter 6 explains the interrupts and traps features of the Z380. 7. Reset Chapter 7 describes the Reset function. 8. Z380 Benchmark Appnote 9. Z380 Questions & Answers ZILOG Appendix A Appendix A covers the Z380's instruction format. Appendix B Appendix B contains all Z380 instructions sorted in Alphabetical Order. Appendix C Appendix C contains all Z380 instructions sorted in Numerical Order. Appendix D The Tables in Appendix D lists all the Z380 instructions in instruction affected by Native/Extended mode and Word/Long Word mode. Appendix E The Tables in Appendix E lists all the Z380 instructions in instruction affected by DDIR IM (Immediate Decoder Directives) mode. Index A to Z listing of Z380TM User's Manual key words and phrases. This manual assumes the reader has a basic knowledge of CPUbased system architectures and software development systems, such as the use of the text editor, and invoking the assembler/ compiler. Also, knowledge of the Z80(R) CPU architecture is desirable. (c) 1994, 1995, 1996, 1997 by Zilog, Inc. All rights reserved. No part of this document may be copied or reproduced in any form or by any means without the prior written consent of Zilog, Inc. The information in this document is subject to change without notice. Devices sold by Zilog, Inc. are covered by warranty and patent indemnification provisions appearing in Zilog, Inc. Terms and Conditions of Sale only. ZILOG, INC. MAKES NO WARRANTY, EXPRESS, STATUTORY, IMPLIED OR BY DESCRIPTION, REGARDING THE INFORMATION SET FORTH HEREIN OR REGARDING THE FREEDOM OF THE DESCRIBED DEVICES FROM INTELLECTUAL PROPERTY INFRINGEMENT. ZILOG, INC. MAKES NO WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PURPOSE. Zilog, Inc. shall not be responsible for any errors that may appear in this document. Zilog, Inc. makes no commitment to update or keep current the information contained in this document. Zilog's products are not authorized for use as critical components in life support devices or systems unless a specific written agreement pertaining to such intended use is executed between the customer and Zilog prior to use. Life support devices or systems are those which are intended for surgical implantation into the body, or which sustains life whose failure to perform, when properly used in accordance with instructions for use provided in the labeling, can be reasonably expected to result in significant injury to the user. Zilog, Inc. 210 East Hacienda Ave. Campbell, CA 95008-6600 Telephone (408) 370-8000 Telex 910-338-7621 FAX 408 370-8056 Internet: http://www.zilog.com DC-8297-03 USER 'S M ANUAL ZILOG USER's MANUAL CHAPTER 1 Z380TM ARCHITECTURAL OVERVIEW 1.1 INTRODUCTION The Z380 CPU incorporates advanced architectural features that allow fast and efficient throughput and increased memory addressing capabilities while maintaining Z80(R) CPU and Z180(R) MPU object-code compatibility. The Z380 CPU core provides a continuing growth path for present Z80- or Z180(R)-based designs and offers the following key features: Full Static CMOS Design with Low Power Standby Mode Support DC to 18 MHz Operating Frequency @ 5 Volts VCC DC to 10 MHz Operating Frequency @ 33 Volts VCC Enhanced Instruction Set that Maintains Object-Code Compatibility with Z80 and Z180 Microprocessors 16-Bit (64K) or 32-Bit (4G) Linear Address Space 16-Bit Internal Data Bus Two Clock Cycle Instruction Execution (Minimum) Multiple On-Chip Register Files (Z380 MPU has Four Banks) BC/DE/HL/IX/IY Registers are Augmented by 16-Bit Extended Registers (BCz/DEz/HLz/IXz/IYz), PC/SP/I Registers are Augmented by Extended Registers (PCz/ SPz/Iz) for 32-Bit Addressing Capability. Newly Added IX' and IY' Registers with Extended Registers (IXz'/IYz') Enhanced Interrupt Capabilities, Including 16-Bit Vector Undefined Opcode Trap for Full Z380 CPU Instruction Set The Z380 CPU, an enhanced version of the Z80 CPU, retains the Z80 CPU instruction set to maintain complete binary-code compatiblity with present Z80 and Z180 codes. The basic addressing modes of the Z80 microprocessor have been augmented with Stack Pointer Relative loads and stores, 16-bit and 24-bit Indexed offsets, and increased Indirect register addressing flexibility, with all of the addressing modes allowing access to the entire 32-bit address space. Significant additions have been made to the instruction set iincorporating16-bit arithmetic and logical operations, 16-bit I/O operations, multiply and divide, a complete set of register-to-register loads and exchanges, plus 32-bit load and exchange, and 32-bit arithmetic operation for address calculation. The basic register file of the Z80 microprocessor is expanded to include alternate register versions of the IX and IY registers. There are four sets of this basic Z80 microprocessor register file present in the Z380 MPU, along with the necessary resources to manage switching between the different register sets. All of the register pairs and index registers in the basic Z80 microprocessor register file are expanded to 32 bits. The Z380 CPU expands the basic 64 Kbyte Z80 and Z180 address space to a full 4 Gbyte (32-bit) address space. This address space is linear and completely accessible to the user program. The external I/O address space is similarly expanded to a full 4 Gbyte (32-bit) range, and 16bit I/O, both simple and block move are included. A 256 byte-wide internal I/O space has been added. This space will be used to access on-chip I/O resources on future Superintegration implementation of this CPU core. Figure 1-1 provides a detailed description of the basic register architecture of the Z380 CPU with the size of the register banks shown at four each, however, the Z380 CPU architecture allows future expansion of up to 128 sets of each. Z380TM USER'S MANUAL ZILOG 1.1 INTRODUCTION (Continued) 4 Sets of Registers BCz A B F C DEz HLz IXz IYz D H IXU IYU E L IXL IYL BCz' A' B' F' C' DEz' HLz' IXz' D' H' IXU' E' L' IXL' IYz' IYU' IYL' Iz SPz PCz R I SP PC Figure 1-1. Z380TM CPU Register Architecture 1-2 DC-8297-03 Z380TM USER'S MANUAL ZILOG 1.2 CPU ARCHITECTURE The Z380 CPU is a binary-compatible extension of the Z80 CPU and the Z180 CPU architecture. High throughput rates are achieved by a high clock rate, high bus bandwidth, and instruction fetch/execute overlap. Communicating to the external world through an 8-bit or 16-bit data bus, the Z380 CPU is a full 32-bit machine internally, with a 32-bit ALU and 32-bit registers. 1.2.1 Modes of Operation To maintain compatibility with the Z80/Z180 CPU while having the capability to manipulate 4 Gbytes of memory address range, the Z380 CPU has two bits in the Select Register (SR) to control the modes of operation. One bit controls the address manipulation mode: Native mode or Extended mode; and the other bit controls the data manipulation mode: Word mode or Long Word mode. In result, the Z380 CPU has four modes of operation. On reset, the Z380 CPU is in Native/Word mode, which is compatible to the Z80/Z180's operation mode. For details on this subject, refer to Chapter 3, "Native/Extended Mode, Word/Long Word Mode of Operation, and Decoder Directive Instructions." 1.2.1.1 Native Mode and Extended Mode The Z380 CPU can operate in either Native or Extended mode, as controlled by a bit in the Select Register (SR). In Native mode (the Reset configuration), all address manipulations are performed modulo 65536 (216). In this mode, the Program Counter (PC) only increments across 16 bits, all address manipulation instructions (increment, decrement, add, subtract, indexed, stack relative, and PC relative) only operate on 16 bits, and the Stack Pointer (SP) only increments and decrements across 16 bits. The PC high-order word is left at all zeros, as the high-order words of the SP and the I register. Thus, Native mode is fully compatible with the Z80 CPU's 64 Kbyte address mode. It is still possible to address memory outside of 64 Kbyte address space for data storage and retrieval in Native mode, however, since direct addresses, indirect addresses, and the high-order word of the SP, I, and the IX and IY registers may be loaded with non-zero values. Executed code and interrupt service routines must reside in the lowest 64 Kbytes of the address space. In Extended mode, however, all address manipulation instructions operate on 32 bits, allowing access to the entire 4 Gbyte address space of the Z380 CPU. In both Native and Extended modes, the Z380 drives all 32 bits of the address onto the external address bus; only the width of the manipulated addresses distinguishes Native from Extended mode. The Z380 CPU implements one instruction to allow switching from Native to Extended mode (SETC XM); however, once in Extended mode, only Reset DC-8297-03 will return the Z380 CPU to Native mode. This restriction applies because of the possibility of "misplacing" interrupt service routines or vector tables during the transition from Extended mode back to Native mode. 1.2.1.2 Word or Long Word Mode In addition to Native and Extended mode, which are specific to memory space addressing, the Z380 CPU can operate in either Word or Long Word mode specific to data load and exchange operations. In Word mode (the Reset configuration), all word load and exchange operations manipulate 16-bit quantities. For example, only the loworder words of the source and destination are exchanged in an exchange operation, with the high-order words unaffected. In the Long Word mode, all 32 bits of the source and destination are exchanged. The Z380 CPU implements two instructions plus decoder directives to allow switching between Word and Long Word mode; SETC LW (Set Control Long Word) and RESC LW (Reset Control Long Word) perform a global switch, while DDIR W, DDIR LW and their variants are decoder directives that select a particular mode only for the instruction that they precede. Note that all word data arithmetic (as opposed to address manipulation arithmetic), rotate, shift, and logical operations are always in 16-bit quantities. They are not controlled by either the Native/Extended or Word/Long Word selections. The exceptions to the 16-bit quantities are, of course, those multiply and divide operations with 32-bit products or dividends. All word Input/Output operations are performed on 16-bit values, regardless of Word/Long Word operation. 1.2.2 Address Spaces Addressing spaces in the Z380 CPU include the CPU register, the CPU control register, the memory address, on-chip I/O address, and the external I/O address. The CPU register space is a superset of the Z80 CPU register set, and consists of all of the registers in the CPU register file. These CPU registers are used for data and address manipulation, and are an extension of the Z80 CPU register set, with four sets of this extended Z80 CPU register set present in the Z380 CPU. Access to these registers is specified in the instruction, with the active register set selected by bits in the Select Register (SR) in the CPU control register space. 1-3 Z380TM USER'S MANUAL ZILOG 1.2.2 Address Spaces (Continued) 1.2.4. Addressing Modes Each register set includes the primary registers A, F, B, C, D, E, H, L, IX, and IY, as well as the alternate registers A', F', B', C', D', E', H', L', IX', and IY'. Also, IX, IX', IY, and IY' registers are accessible as two byte registers, each named as IXU, IXL, IXU' IXL', IYU, IYL, IYU', and IYL'. These byte registers can be paired B with C, D with E, H with L, B' with C', D' with E', and H' with L' to form word registers, and these word registers are extended to 32 bits with the "z" extension to the register. This register extension is only accessible when using the register as a 32-bit register (in the Long Word mode) or when swapping between the most-significant and least-significant word of a 32-bit register using SWAP instructions. Whenever an instruction refers to a word register, the implicit size is controlled by Word or Long Word mode. Also included are the R, I, and SP registers, as well as the PC. Addressing modes are used by the Z380 CPU to calculate the effective address of an operand needed for execution of an instruction. Seven addressing modes are supported by the Z380 CPU. Of these seven, one is an addition to the Z80 CPU addressing modes (Stack Pointer Relative) and the remaining six modes are either existing or extensions to Z80 CPU addressing modes. The Select Register (SR) determines the operation of the Z380 CPU. The contents of this register determine the CPU operating mode, which register bank will be used, the interrupt mode in effect, and so on. The Z380 CPU's memory address space is linear 4 Gbytes. To keep compatibility with the Z80 CPU memory addressing model, it has two control bits to change its operation modes--Native or Extended, Word or Long Word. The Z380 CPU architecture also distinguishes between the memory and I/O addressing space and, therefore, requires specific I/O instructions. Furthermore, I/O addressing space is subdivided into the on-chip I/O address space and the external I/O addressing space. External I/O addressing space in the Z380 CPU is 32 bits long, and internal I/O addressing space is 8-bits long. There are separate sets of I/O instructions for each I/O addressing space. Register Immediate Indirect Register Direct Address Indexed Program Counter Relative Stack Pointer Relative All addressing modes are available on the 8-bit load, arithmetic, and logical instructions; the 8-bit shift, rotate, and bit manipulation instructions are limited to the registers and Indirect register addressing modes. The 16-bit loads on the addressing registers support all addressing modes except Index, while other 16-bit operations are limited to the Register, Immediate, Indirect Register, Index, Direct Address, and PC Relative addressing modes. For details on this subject, refer to Chapter 4, "Addressing Modes and Data Types." 1.2.5. Instruction Set The Z380 CPU instruction set is an expansion of the Z80 instruction set; the enhancements include support for additional addressing modes for the Z80 instructions as well as the addition of new instructions. The Z380 CPU instruction set provides a full complement of 8-bit, 16-bit, and 32-bit operation, including multiplication and division. Some of the Internal I/O registers are used to control the functionality of the device, such as to program/read status of Trap, Assigned Vector Base address, enabling of interrupts, and to get Chip version ID. For details on this subject, refer to Chapter 5, "Instruction Set." For details on this topic, refer to Chapter 2, "Address Spaces." The Z380 CPU supports three types of exceptions (conditions that alter the normal flow of program execution); interrupts, traps, and resets. 1.2.6 Exception Conditions 1.2.3 Data Types Many data types are supported by the Z380 CPU architecture. The basic data type is the 8-bit byte, which is also the basic addressable memory element. The architecture also supports operations on bits, BCD (Binary Coded Decimal) digits, words (16 bits or 32 bits), byte strings and word strings. For details on this topic, refer to Section 4.3, "Data Types." 1-4 Interrupts are asynchronous events typically triggered by peripherals requiring attention. The Z380 CPU interrupt structure has been significantly enhanced by increasing the number of interrupt request lines and by adding an efficient means for handling nested interrupts. The Z380 CPU has five interrupt lines. These are: Nonmaskable Interrupt line (/NMI) and Maskable interrupt lines (/INT0, /INT1, /INT2, and /INT3). Interrupt requests on /INT3-/INT1 DC-8297-03 Z380TM USER'S MANUAL ZILOG are handled by a newly added interrupt handing mode, "Assigned Vectored Mode," which is a fixed vectored interrupt mode similar in interrupt handling to the Z180's interrupts from on-chip peripherals. For handling interrupt requests on the /INT0 line, there are four modes available: 8080 compatible (Mode 0), in which the interrupting device provides the first instruction of the interrupt routine. Dedicated interrupts (Mode 1), in which the CPU jumps to a dedicated address when an interrupt occurs. Vectored interrupt mode (Mode 2), in which the interrupting peripheral device provides a vector into a table of jump address. Enhanced vectored interrupt mode (Mode 3), wherein the CPU expects 16-bit vector, instead of 8-bit interrupt vectors in Mode 2. The first three modes are compatible with Z80 interrupt modes; the fourth mode provides more flexibility. Traps are synchronous events that trigger a special CPU response when an undefined instruction is executed. It can be used to increase system reliability, or used as a "software trap instruction." Hardware resets occur when the /RESET line is activated and override all other conditions. A /RESET causes certain CPU control registers to be initialized. For details on this subject, refer to Chapter 6, "Interrupts and Traps." 1.3 BENEFITS OF THE ARCHITECTURE The Z380 CPU architecture provides several significant benefits, including increased program throughput achieved by higher bus bandwidth (16-bit wide bus), reduction to two clocks/basic machine cycle (vs four clocks/cycle on the Z80 CPU), prefetch cue, access to the larger linear addressing space, enhanced instructions/new addressing mode, data/address manipulation in 16/32 bits, and faster context switching by utilizing multiple register banks. 1.3.1 High Throughput Very high throughput rates can be achieved with the Z380 CPU, due to the basic machine cycle's reduction to two clocks/cycle from four clocks/cycle on the Z80 CPU, fine tuned four staged pipeline with prefetch cue. This well designed pipeline and prefetch cue are both totally transparent to the user, thus maximizing the efficiency of the pipeline all the time. The Z380 CPU implemented onto the Z380 MPU is configured with a 16-bit wide data bus, which doubles the bus bandwidth. These architectural features result in two clocks/instructions execution minimum, three clocks/instruction on average. The high clock rates (up to 40 MHz) achievable with this processor. Make the overall performance of the Z380 CPU more than ten times that of the Z80. the technology improved over time, applications started to demand more complicated processing, multitasking, faster processing, etc., with the high level language needed to develop software. As a result, 64 Kbytes of memory addressing space is not enough for some Z80 CPU based applications. In order to handle more than 64 Kbytes of memory, the Z80 CPU requires a Memory Banking scheme, or MMU (Memory Management Unit), like the Z180 MPU or Z280 MPU. These provide the overhead to access more than 64 Kbytes of memory. The Z380 CPU architecture allows access to a full 4 Gbytes (232) of memory addressing space as well as 4 Gbytes of I/O addressing area, without using a Memory Banking scheme, or MMU. 1.3.3. Enhanced Instruction Set with 16-Bit and 32-Bit Manipulation Capability The Z380 CPU instruction set is 100% upward compatible to the Z80 CPU instruction set; that is all the Z80 instructions have been preserved at the binary level. New instructions added to the Z380 CPU include: Less restricted operand source/destination combinations. More flexible register exchange instructions. Stack Pointer Relative addressing mode. 1.3.2 Linear Memory Address Space Z380 CPU architecture has 4 Gbytes of linear memory address space. The Z80 CPU architecture allows 64 Kbytes of memory addressing space. This was more than sufficient when the Z80 CPU was first developed. But as DC-8297-03 1-5 Z380TM USER'S MANUAL ZILOG 1.3.3. Enhanced Instruction Set with 16-Bit and 32-Bit Manipulation Capability (Continued) DDIR (Decoder Directive Instructions) to enhance addressing capability to cover 4 Gbytes of memory space, as well as data manipulation capability. Jump relative/Call relative instructions with 8-bit, 16-bit, or 24-bit displacement. Full complements of 16-bit arithmetic instructions. 32-bit manipulate instructions for address manipulation. These new instructions help to compact the code, as well as shorten the program's overall execution speed. For details on this subject, refer to Chapter 5, "Instruction Set." register pairs (including each register's Extended portion). When doing context switching, by exceptional condition (trap or interrupts) or by subroutine/procedure calls, the CPU has to save the contents of the registers currently in use, along with the current CPU status. Traditionally in the Z80 CPU architecture, this is done by saving the contents of the register into memory, usually using push/pop instructions or the auxiliary register file. Register contents are then restored when the process is finished. With the Z380 CPU's multiple register banks, saving the contents of the working register set currently in use is just a matter of an instruction to change the field in the Select Register, which allows fast context switching. 1.3.4 Faster Context Switching The Z380 CPU architecture allows multiple sets of register banks for AF/AF', BC/DE/HL, BC'/DE'/HL', IX/IX', IY/IY' 1.4 SUMMARY The Z380 CPU is a high-performance 16-bit Central Processing Unit SuperintegrationTM core. Code-compatible with the Z80 CPU, the Z380 CPU architecture has been expanded to include features such as multiple register banks, 4 Gbytes of linear memory addressing space, and efficient handling of nested interrupts. The benefits of this architecture, including high throughput rates, code density, and compiler efficiency, greatly enhance the power and versatility of the Z380 CPU. Thus, the Z380 CPU provides both a growth path for existing Z80-based designs and a powerful processor for applications and the products to be developed around this CPU core. (c) 1994, 1995, 1996, 1997 by Zilog, Inc. All rights reserved. No part of this document may be copied or reproduced in any form or by any means without the prior written consent of Zilog, Inc. The information in this document is subject to change without notice. Devices sold by Zilog, Inc. are covered by warranty and patent indemnification provisions appearing in Zilog, Inc. Terms and Conditions of Sale only. Zilog's products are not authorized for use as critical components in life support devices or systems unless a specific written agreement pertaining to such intended use is executed between the customer and Zilog prior to use. Life support devices or systems are those which are intended for surgical implantation into the body, or which sustains life whose failure to perform, when properly used in accordance with instructions for use provided in the labeling, can be reasonably expected to result in significant injury to the user. ZILOG, INC. MAKES NO WARRANTY, EXPRESS, STATUTORY, IMPLIED OR BY DESCRIPTION, REGARDING THE INFORMATION SET FORTH HEREIN OR REGARDING THE FREEDOM OF THE DESCRIBED DEVICES FROM INTELLECTUAL PROPERTY INFRINGEMENT. ZILOG, INC. MAKES NO WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PURPOSE. Zilog, Inc. shall not be responsible for any errors that may appear in this document. Zilog, Inc. makes no commitment to update or keep current the information contained in this document. 1-6 Zilog, Inc. 210 East Hacienda Ave. Campbell, CA 95008-6600 Telephone (408) 370-8000 Telex 910-338-7621 FAX 408 370-8056 Internet: http://www.zilog.com DC-8297-03 Z380TM USER'S MANUAL ZILOG USER's MANUAL CHAPTER 2 ADDRESS SPACES 2.1 INTRODUCTION The Z380 CPU supports five address spaces corresponding to the different types of locations that can be addressed and the method by which the logical addresses are formed. These five address spaces are: CPU Register Space. This consists of all the register addresses in the CPU register file. CPU Control Register Space. This consists of the Select Register (SR). Memory Address Space. This consists of the addresses of all locations in the main memory. External I/O Address Space. This consists of all external I/O ports addresses through which peripheral devices are accessed. On-Chip I/O Address Space. This consists of all internal I/O port addresses through which peripheral devices are accessed. Also, this addressing space contains registers to control the functionality of the device, giving status information. Four sets of Index registers (IX, IY, IX', IY') Stack Pointer (SP) Program Counter, Interrupt register, Refresh register (PC, I, R) 2.2 CPU REGISTER SPACE The Z380 register file is illustrated in Figure 2-1. Note that this figure shows the configuration of the register on the Z380 CPU, and the number of the register files may vary on future Superintegration devices. The Z380 CPU contains abundant register resources. At any given time, the program has immediate access to both primary and alternate registers in the selected register set. Changing register sets is a simple matter of an LDCTL instruction to program the Select Register (SR). Register addresses are either specified explicitly in the instruction or are implied by the semantics of the instruction. The CPU register file is divided into five groups of registers (an apostrophe indicates a register in the auxiliary registers). Four sets of Flag and Accumulator registers (F, A, F', A') Four sets of Primary and Working registers (B, C, D, E, H, L, B', C', D', E', H', L') DC-8297-03 2-1 Z380TM USER'S MANUAL ZILOG 2.2 CPU REGISTER SPACE (Continued) 4 Sets of Registers BCz A B F C DEz HLz IXz IYz D H IXU IYU E L IXL IYL BCz' A' B' F' C' DEz' HLz' IXz' D' H' IXU' E' L' IXL' IYz' IYU' IYL' R I Iz SPz PCz SP PC Figure 2-1. Register File Organization (Z380 MPU) 2-2 DC-8297-03 Z380TM USER'S MANUAL ZILOG 2.2.1 Primary and Working Registers The working register set is divided into two register files: the primary file and the alternate file (designated by prime (`)). Each file contains an 8-bit accumulator (A), a Flag register (F), and six 8-bit general-purpose registers (B, C, D, E, H, and L) with their Extended registers. Only one file can be active at any given time, although data in the inactive file can still be accessed by using EX R, R' instructions for the byte-wide registers, EX RR, RR' instructions for register pairs (either in 16-bit or 32-bit wide depending on the LW status). Exchange instructions allow the programmer to exchange the active file with the inactive file. The EX AF, AF', EXX, or EXALL instructions changes the register files in use. Upon reset, the primary register file in register set 0 is active. Changing register sets is a simple matter of an LDCTL instruction to program SR. The accumulator is the destination register for 8-bit arithmetic and logical operations. The six general-purpose registers can be paired (BC, DE, and HL), and are extended to 32 bits by the extension to the register (with suffix "z"; BCz/DEz/HLz), to form three 32-bit general-purpose registers. The HL register serves as the 16-bit or 32-bit accumulator for word operations. Access to the Extended portion of the registers is possible using the SWAP instruction or word Load instructions in Long Word operation mode. The Flag register contains eight status flags. Four can be individually used for control of program branching, two are used to support decimal arithmetic, and two are reserved. These flags are set or reset by various CPU operations. For details on Flag operations, refer to Section 5.2, "Flag Register." for the IX and IX' registers, and IYU, IYU', IYL, and IYL' for the IY and IY' registers. Selection of primary or auxiliary Index registers can be made by EXXX, EXXY, or EXALL instructions, or programming of SR. Upon reset, the primary registers in register set 0 is active. Changing register sets is a simple matter of an LDCTL instruction to program SR. 2.2.3. Interrupt Register The Interrupt register (I) is used in interrupt modes 2 and 3 for /INT0 to generate a 32-bit indirect address to an interrupt service routine. The I register supplies the upper 24 or 16 bits of the indirect address and the interrupting peripheral supplies the lower eight or 16 bits. In Assigned Vectors mode for /INT3-/INT1, the upper 16 bits of the vector are supplied by the I register; bits 15-9 are supplied from the Assigned Vector Base register, and bits 8-0 are the assigned vector unique to each of /INT3-/INT1. 2.2.4. Program Counter The Program Counter (PC) is used to sequence through instructions in the currently executing program and to generate relative addresses. The PC contains the 32-bit address of the current instruction being fetched from memory. In Native mode, the PC is effectively only 16 bits long, since the upper word [PC31-PC16] of the PC is forced to zero, and when carried from bit 15 to bit 16 (Lower word [PC15-PC0] to Upper word [PC31-PC16]) are inhibited in this mode. In Extended mode, the PC is allowed to increment across all 32 bits. 2.2.5. R Register 2.2.2. Index Registers The four index registers, IX, IX', IY, and IY', are extended to 32 bits by the extension to the register (with suffix "z"; IXz/IYz), to form 32-bit index registers. To access the Extended portion of the registers use the SWAP instruction or word Load instructions in Long Word operation mode. These Index registers hold a 32-bit base address that is used in the Index addressing mode. Only one register of each can be active at any given time, although data in the inactive file can still be accessed by using EX IX, IX' and EX IY, IY' (either in 16-bit or 32-bit wide depending on the LW bit status). Index registers can also function as general-purpose registers with the upper and lower bytes of the lower 16 bits being accessed individually. These byte registers are called IXU, IXU', IXL, and IXL' DC-8297-03 The R register can be used as a general-purpose 8-bit read/write register. The R register is not associated with the refresh controller and its contents are changed only by the user. 2.2.6. Stack Pointer The Stack Pointer (SP) is used for saving information when an interrupt or trap occurs and for supporting subroutine calls and returns. Stack Pointer relative addressing allows parameter passing using the SP. The SP is 16 bits wide, but is extended by the SPz register to 32 bits wide. 2-3 ZILOG Z380TM USER'S MANUAL 2.2.6 Stack Pointer (Continued) Increment/decrement of the Stack Pointer is affected by modes of operation (Native or Extended). In Native mode, the stack operates in modulo 216, and in Extended mode, it operates in modulo 232. For example, SP holds 0001FFFEH, and does the Word size Pop operation. After the operation, SP holds 00010000H in Native mode, and 00020000H in Extended mode. In either case, SPz can be programmed to set Stack frame. This is done by the Load- to-Stack pointer instructions in Long Word mode. 2.3. CPU CONTROL REGISTER SPACE The CPU control register space consists of the 32-bit Select Register (SR). The SR may be accessed as a whole or the upper three bytes of the SR may be accessed individually as YSR, XSR, and DSR. In addition, these upper three bytes can be loaded with the same byte value. The SR may also be PUSHed and POPed and is cleared to zeros on Reset. For details on this register, refer to Chapter 5.3, "Select Register." 2.4 MEMORY ADDRESS SPACE The memory address space can be viewed as a string of 4 Gbytes numbered consecutively in ascending order. The 8-bit byte is the basic addressable element in the Z380 MPU memory address space. However, there are other addressable data elements: bits, 2-byte words, byte strings, and 4-byte words. The size of the data element being addressed depends on the instruction being executed as well as the Word/Long Word mode. A bit can be addressed by specifying a byte and a bit within that byte. Bits are numbered from right to left, with the least significant bit being 0, as illustrated in Figure 2-2. either even or odd memory addresses. A word (either 2byte or 4-byte entity) is aligned if its address is even; otherwise it is unaligned. Multiple bus transactions, which may be required to access multiple-byte entities, can be minimized if alignment is maintained. The format of multiple-byte data types is also shown in Figure 2-2. Note that when a word is stored in memory, the least significant byte precedes the more significant byte of the word, as in the Z80 CPU architecture. Also, the loweraddressed byte is present on the upper byte of the external data bus. The address of a multiple-byte entity is the same as the address of the byte with the lowest memory address in the entity. Multiple-byte entities can be stored beginning with 2-4 DC-8297-03 Z380TM USER'S MANUAL ZILOG Bits within a byte: 7 6 5 4 3 2 1 0 16-bit word at address n: Least Significant Byte Address n Most Significant Byte Address n+1 32-bit word at address n: D7-0 (Least Significant Byte) Address n D15-8 Address n+1 D23-16 Address n+2 D31-24 (Most Significant Byte) Address n+3 Memory addresses: Even address (A0=0) Odd address (A0=1) Least Significant Byte 15 14 13 12 11 10 Most Significant Byte 9 8 7 6 5 4 3 2 1 0 Figure 2-2. Bit/Byte Ordering Conventions DC-8297-03 2-5 Z380TM USER'S MANUAL ZILOG 2.5. EXTERNAL I/O ADDRESS SPACE External I/O address space is 4 Gbytes in size and External I/O addresses are generated by I/O instructions except those reserved for on-chip I/O address space accesses. It can take a variety of forms, as shown in Table 2.1. An external I/O read or write is always one transaction, regardless of the bus size and the type of I/O instruction. Table 2-1. I/O Addressing Options Address Bus A15-A8 I/O Instruction A31-A24 A23-A16 A7-A0 IN A, (n) IN dst,(C) INA(W) dst,(mn) 00000000 BC31-B24 00000000 00000000 BC23-B16 00000000 A7-A0 BC15-B8 m n BC7-B0 n DDIR IB INA(W) dst,(lmn) DDIR IW INA(W) dst,(klmn) Block Input 00000000 k BC31-B24 l l BC23-B16 m m BC15-B8 n n BC7-B0 OUT (n),A OUT (C),dst OUTA(W) (mn),dst 00000000 BC31-B24 00000000 00000000 BC23-B16 00000000 A7-A0 BC15-B8 m n BC7-B0 n DDIR IB OUTA(W) (lmn),dst DDIR IW OUTA(W) (klmn),dst Block Output 00000000 k BC31-B24 l l BC23-B16 m m BC15-B8 n n BC7-B0 2.6. ON-CHIP I/O ADDRESS SPACE The Z380 CPU has the on-chip I/O address space to control on-chip peripheral functions of the SuperintegrationTM version of the devices. A portion of its interrupt functions are also controlled by several on-chip registers, which occupy an on-chip I/O address space. This on-chip I/O address space can be accessed only with the following reserved on-chip I/O instructions which are identical to the Z180 original I/O instructions to access Page 0 I/O addressing area. IN0 IN0 OUT0 TSTIO R,(n) (n) (n),R n OTIM OTIMR OTDM OTDMR When one of these I/O instructions is executed, the Z380 MPU outputs the register address being accessed in a pseudo-transaction of two BUSCLK cycles duration, with the address signals A31-A8 at zero. In the pseudo-transactions, all bus control signals are at their inactive state. Register Name Interrupt Enable Register Assigned Vector Base Register Trap and Break Register Chip Version ID Register Internal I/O Address 17H 18H 19H 0FFH The Chip Version ID register returns one byte data, which indicates the version of the CPU, or the specific implementation of the Z380 CPU based Superintegration device. Currently, the value 00H is assigned to the Z380 MPU, and other values are reserved. For the other three registers, refer to Chapter 6, "Interrupts and Traps." Also, the Z380 MPU has registers to control chip selects, refresh, waits, and I/O clock divide to Internal I/O address 00H to 10H. For these registers, refer to the Z380 MPU Product specification (DC-3003-01). The following four registers are assigned to this addressing space as a part of the Z380 CPU core: 2-6 DC-8297-03 Z380TM USER'S MANUAL ZILOG (c) 1994, 1995, 1996, 1997 by Zilog, Inc. All rights reserved. No part of this document may be copied or reproduced in any form or by any means without the prior written consent of Zilog, Inc. The information in this document is subject to change without notice. Devices sold by Zilog, Inc. are covered by warranty and patent indemnification provisions appearing in Zilog, Inc. Terms and Conditions of Sale only. ZILOG, INC. MAKES NO WARRANTY, EXPRESS, STATUTORY, IMPLIED OR BY DESCRIPTION, REGARDING THE INFORMATION SET FORTH HEREIN OR REGARDING THE FREEDOM OF THE DESCRIBED DEVICES FROM INTELLECTUAL PROPERTY INFRINGEMENT. ZILOG, INC. MAKES NO WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PURPOSE. Zilog, Inc. shall not be responsible for any errors that may appear in this document. Zilog, Inc. makes no commitment to update or keep current the information contained in this document. DC-8297-03 Zilog's products are not authorized for use as critical components in life support devices or systems unless a specific written agreement pertaining to such intended use is executed between the customer and Zilog prior to use. Life support devices or systems are those which are intended for surgical implantation into the body, or which sustains life whose failure to perform, when properly used in accordance with instructions for use provided in the labeling, can be reasonably expected to result in significant injury to the user. Zilog, Inc. 210 East Hacienda Ave. Campbell, CA 95008-6600 Telephone (408) 370-8000 Telex 910-338-7621 FAX 408 370-8056 Internet: http://www.zilog.com 2-7 Z380TM USER'S MANUAL ZILOG USER's MANUAL CHAPTER 2 ADDRESS SPACES 2.1 INTRODUCTION The Z380 CPU supports five address spaces corresponding to the different types of locations that can be addressed and the method by which the logical addresses are formed. These five address spaces are: CPU Register Space. This consists of all the register addresses in the CPU register file. CPU Control Register Space. This consists of the Select Register (SR). Memory Address Space. This consists of the addresses of all locations in the main memory. External I/O Address Space. This consists of all external I/O ports addresses through which peripheral devices are accessed. On-Chip I/O Address Space. This consists of all internal I/O port addresses through which peripheral devices are accessed. Also, this addressing space contains registers to control the functionality of the device, giving status information. Four sets of Index registers (IX, IY, IX', IY') Stack Pointer (SP) Program Counter, Interrupt register, Refresh register (PC, I, R) 2.2 CPU REGISTER SPACE The Z380 register file is illustrated in Figure 2-1. Note that this figure shows the configuration of the register on the Z380 CPU, and the number of the register files may vary on future Superintegration devices. The Z380 CPU contains abundant register resources. At any given time, the program has immediate access to both primary and alternate registers in the selected register set. Changing register sets is a simple matter of an LDCTL instruction to program the Select Register (SR). Register addresses are either specified explicitly in the instruction or are implied by the semantics of the instruction. The CPU register file is divided into five groups of registers (an apostrophe indicates a register in the auxiliary registers). Four sets of Flag and Accumulator registers (F, A, F', A') Four sets of Primary and Working registers (B, C, D, E, H, L, B', C', D', E', H', L') DC-8297-03 2-1 Z380TM USER'S MANUAL ZILOG 2.2 CPU REGISTER SPACE (Continued) 4 Sets of Registers BCz A B F C DEz HLz IXz IYz D H IXU IYU E L IXL IYL BCz' A' B' F' C' DEz' HLz' IXz' D' H' IXU' E' L' IXL' IYz' IYU' IYL' R I Iz SPz PCz SP PC Figure 2-1. Register File Organization (Z380 MPU) 2-2 DC-8297-03 Z380TM USER'S MANUAL ZILOG 2.2.1 Primary and Working Registers The working register set is divided into two register files: the primary file and the alternate file (designated by prime (`)). Each file contains an 8-bit accumulator (A), a Flag register (F), and six 8-bit general-purpose registers (B, C, D, E, H, and L) with their Extended registers. Only one file can be active at any given time, although data in the inactive file can still be accessed by using EX R, R' instructions for the byte-wide registers, EX RR, RR' instructions for register pairs (either in 16-bit or 32-bit wide depending on the LW status). Exchange instructions allow the programmer to exchange the active file with the inactive file. The EX AF, AF', EXX, or EXALL instructions changes the register files in use. Upon reset, the primary register file in register set 0 is active. Changing register sets is a simple matter of an LDCTL instruction to program SR. The accumulator is the destination register for 8-bit arithmetic and logical operations. The six general-purpose registers can be paired (BC, DE, and HL), and are extended to 32 bits by the extension to the register (with suffix "z"; BCz/DEz/HLz), to form three 32-bit general-purpose registers. The HL register serves as the 16-bit or 32-bit accumulator for word operations. Access to the Extended portion of the registers is possible using the SWAP instruction or word Load instructions in Long Word operation mode. The Flag register contains eight status flags. Four can be individually used for control of program branching, two are used to support decimal arithmetic, and two are reserved. These flags are set or reset by various CPU operations. For details on Flag operations, refer to Section 5.2, "Flag Register." for the IX and IX' registers, and IYU, IYU', IYL, and IYL' for the IY and IY' registers. Selection of primary or auxiliary Index registers can be made by EXXX, EXXY, or EXALL instructions, or programming of SR. Upon reset, the primary registers in register set 0 is active. Changing register sets is a simple matter of an LDCTL instruction to program SR. 2.2.3. Interrupt Register The Interrupt register (I) is used in interrupt modes 2 and 3 for /INT0 to generate a 32-bit indirect address to an interrupt service routine. The I register supplies the upper 24 or 16 bits of the indirect address and the interrupting peripheral supplies the lower eight or 16 bits. In Assigned Vectors mode for /INT3-/INT1, the upper 16 bits of the vector are supplied by the I register; bits 15-9 are supplied from the Assigned Vector Base register, and bits 8-0 are the assigned vector unique to each of /INT3-/INT1. 2.2.4. Program Counter The Program Counter (PC) is used to sequence through instructions in the currently executing program and to generate relative addresses. The PC contains the 32-bit address of the current instruction being fetched from memory. In Native mode, the PC is effectively only 16 bits long, since the upper word [PC31-PC16] of the PC is forced to zero, and when carried from bit 15 to bit 16 (Lower word [PC15-PC0] to Upper word [PC31-PC16]) are inhibited in this mode. In Extended mode, the PC is allowed to increment across all 32 bits. 2.2.5. R Register 2.2.2. Index Registers The four index registers, IX, IX', IY, and IY', are extended to 32 bits by the extension to the register (with suffix "z"; IXz/IYz), to form 32-bit index registers. To access the Extended portion of the registers use the SWAP instruction or word Load instructions in Long Word operation mode. These Index registers hold a 32-bit base address that is used in the Index addressing mode. Only one register of each can be active at any given time, although data in the inactive file can still be accessed by using EX IX, IX' and EX IY, IY' (either in 16-bit or 32-bit wide depending on the LW bit status). Index registers can also function as general-purpose registers with the upper and lower bytes of the lower 16 bits being accessed individually. These byte registers are called IXU, IXU', IXL, and IXL' DC-8297-03 The R register can be used as a general-purpose 8-bit read/write register. The R register is not associated with the refresh controller and its contents are changed only by the user. 2.2.6. Stack Pointer The Stack Pointer (SP) is used for saving information when an interrupt or trap occurs and for supporting subroutine calls and returns. Stack Pointer relative addressing allows parameter passing using the SP. The SP is 16 bits wide, but is extended by the SPz register to 32 bits wide. 2-3 ZILOG Z380TM USER'S MANUAL 2.2.6 Stack Pointer (Continued) Increment/decrement of the Stack Pointer is affected by modes of operation (Native or Extended). In Native mode, the stack operates in modulo 216, and in Extended mode, it operates in modulo 232. For example, SP holds 0001FFFEH, and does the Word size Pop operation. After the operation, SP holds 00010000H in Native mode, and 00020000H in Extended mode. In either case, SPz can be programmed to set Stack frame. This is done by the Load- to-Stack pointer instructions in Long Word mode. 2.3. CPU CONTROL REGISTER SPACE The CPU control register space consists of the 32-bit Select Register (SR). The SR may be accessed as a whole or the upper three bytes of the SR may be accessed individually as YSR, XSR, and DSR. In addition, these upper three bytes can be loaded with the same byte value. The SR may also be PUSHed and POPed and is cleared to zeros on Reset. For details on this register, refer to Chapter 5.3, "Select Register." 2.4 MEMORY ADDRESS SPACE The memory address space can be viewed as a string of 4 Gbytes numbered consecutively in ascending order. The 8-bit byte is the basic addressable element in the Z380 MPU memory address space. However, there are other addressable data elements: bits, 2-byte words, byte strings, and 4-byte words. The size of the data element being addressed depends on the instruction being executed as well as the Word/Long Word mode. A bit can be addressed by specifying a byte and a bit within that byte. Bits are numbered from right to left, with the least significant bit being 0, as illustrated in Figure 2-2. either even or odd memory addresses. A word (either 2byte or 4-byte entity) is aligned if its address is even; otherwise it is unaligned. Multiple bus transactions, which may be required to access multiple-byte entities, can be minimized if alignment is maintained. The format of multiple-byte data types is also shown in Figure 2-2. Note that when a word is stored in memory, the least significant byte precedes the more significant byte of the word, as in the Z80 CPU architecture. Also, the loweraddressed byte is present on the upper byte of the external data bus. The address of a multiple-byte entity is the same as the address of the byte with the lowest memory address in the entity. Multiple-byte entities can be stored beginning with 2-4 DC-8297-03 Z380TM USER'S MANUAL ZILOG Bits within a byte: 7 6 5 4 3 2 1 0 16-bit word at address n: Least Significant Byte Address n Most Significant Byte Address n+1 32-bit word at address n: D7-0 (Least Significant Byte) Address n D15-8 Address n+1 D23-16 Address n+2 D31-24 (Most Significant Byte) Address n+3 Memory addresses: Even address (A0=0) Odd address (A0=1) Least Significant Byte 15 14 13 12 11 10 Most Significant Byte 9 8 7 6 5 4 3 2 1 0 Figure 2-2. Bit/Byte Ordering Conventions DC-8297-03 2-5 Z380TM USER'S MANUAL ZILOG 2.5. EXTERNAL I/O ADDRESS SPACE External I/O address space is 4 Gbytes in size and External I/O addresses are generated by I/O instructions except those reserved for on-chip I/O address space accesses. It can take a variety of forms, as shown in Table 2.1. An external I/O read or write is always one transaction, regardless of the bus size and the type of I/O instruction. Table 2-1. I/O Addressing Options Address Bus A15-A8 I/O Instruction A31-A24 A23-A16 A7-A0 IN A, (n) IN dst,(C) INA(W) dst,(mn) 00000000 BC31-B24 00000000 00000000 BC23-B16 00000000 A7-A0 BC15-B8 m n BC7-B0 n DDIR IB INA(W) dst,(lmn) DDIR IW INA(W) dst,(klmn) Block Input 00000000 k BC31-B24 l l BC23-B16 m m BC15-B8 n n BC7-B0 OUT (n),A OUT (C),dst OUTA(W) (mn),dst 00000000 BC31-B24 00000000 00000000 BC23-B16 00000000 A7-A0 BC15-B8 m n BC7-B0 n DDIR IB OUTA(W) (lmn),dst DDIR IW OUTA(W) (klmn),dst Block Output 00000000 k BC31-B24 l l BC23-B16 m m BC15-B8 n n BC7-B0 2.6. ON-CHIP I/O ADDRESS SPACE The Z380 CPU has the on-chip I/O address space to control on-chip peripheral functions of the SuperintegrationTM version of the devices. A portion of its interrupt functions are also controlled by several on-chip registers, which occupy an on-chip I/O address space. This on-chip I/O address space can be accessed only with the following reserved on-chip I/O instructions which are identical to the Z180 original I/O instructions to access Page 0 I/O addressing area. IN0 IN0 OUT0 TSTIO R,(n) (n) (n),R n OTIM OTIMR OTDM OTDMR When one of these I/O instructions is executed, the Z380 MPU outputs the register address being accessed in a pseudo-transaction of two BUSCLK cycles duration, with the address signals A31-A8 at zero. In the pseudo-transactions, all bus control signals are at their inactive state. Register Name Interrupt Enable Register Assigned Vector Base Register Trap and Break Register Chip Version ID Register Internal I/O Address 17H 18H 19H 0FFH The Chip Version ID register returns one byte data, which indicates the version of the CPU, or the specific implementation of the Z380 CPU based Superintegration device. Currently, the value 00H is assigned to the Z380 MPU, and other values are reserved. For the other three registers, refer to Chapter 6, "Interrupts and Traps." Also, the Z380 MPU has registers to control chip selects, refresh, waits, and I/O clock divide to Internal I/O address 00H to 10H. For these registers, refer to the Z380 MPU Product specification (DC-3003-01). The following four registers are assigned to this addressing space as a part of the Z380 CPU core: 2-6 DC-8297-03 Z380TM USER'S MANUAL ZILOG (c) 1994, 1995, 1996, 1997 by Zilog, Inc. All rights reserved. No part of this document may be copied or reproduced in any form or by any means without the prior written consent of Zilog, Inc. The information in this document is subject to change without notice. Devices sold by Zilog, Inc. are covered by warranty and patent indemnification provisions appearing in Zilog, Inc. Terms and Conditions of Sale only. ZILOG, INC. MAKES NO WARRANTY, EXPRESS, STATUTORY, IMPLIED OR BY DESCRIPTION, REGARDING THE INFORMATION SET FORTH HEREIN OR REGARDING THE FREEDOM OF THE DESCRIBED DEVICES FROM INTELLECTUAL PROPERTY INFRINGEMENT. ZILOG, INC. MAKES NO WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PURPOSE. Zilog, Inc. shall not be responsible for any errors that may appear in this document. Zilog, Inc. makes no commitment to update or keep current the information contained in this document. DC-8297-03 Zilog's products are not authorized for use as critical components in life support devices or systems unless a specific written agreement pertaining to such intended use is executed between the customer and Zilog prior to use. Life support devices or systems are those which are intended for surgical implantation into the body, or which sustains life whose failure to perform, when properly used in accordance with instructions for use provided in the labeling, can be reasonably expected to result in significant injury to the user. Zilog, Inc. 210 East Hacienda Ave. Campbell, CA 95008-6600 Telephone (408) 370-8000 Telex 910-338-7621 FAX 408 370-8056 Internet: http://www.zilog.com 2-7 Z380TM USER'S MANUAL ZILOG USER's MANUAL CHAPTER 3 NATIVE EXTENDED MODE, WORD/LONG WORD MODE OF OPERATIONS AND DECODER DIRECTIONS 3.1 INTRODUCTION The Z380TM CPU architecture allows access to 4 Gbytes (232) of memory addressing space, and 4G locations of I/O. It offers 16/32-bit manipulation capability while maintaining object-code compatibility with the Z80 CPU. In order to implement these capabilities and new instruction sets, it has two modes of operation for address manipulation (Native or Extended mode), two modes of operation for data manipulation (Word or Long Word mode), and a special set of new Decoder Directives. On Reset, the Z380 CPU defaults in Native mode and Word mode. In this condition, it behaves exactly the same as the Z80 CPU, even though it has access to the entire 4 Gbytes of memory for data access and 4G locations of I/O space, access to the newly added registers which includes Extended registers and register banks, and the capability of executing all the Z380 instructions. As described below, the Z380 CPU can be switched between Word mode and Long Word mode during operation through the SETC LW and RESC LW instructions, or Decoder Directives. The Native and Extended modes are a key exception-- it defaults up in Native mode, and can be set to Extended mode by the instruction. Only Reset can return it to Native mode. Figure 3-1 illustrates the relationship between these modes of operation. Z380 Native Extended Word Long Word Z80 Native Mode Figure 3-1. Z380TM CPU Operation Modes For the instructions which work with the DDIR instructions, refer to Appendix D and E. DC-8297-03 3-1 Z380TM USER'S MANUAL ZILOG 3.2 DECODER DIRECTIVES The Decoder Directive is not an instruction, but rather a directive to the instruction decoder. The instruction decoder may be directed to fetch an additional byte or word of immediate data or address with the instruction, as well as tagging the instruction for execution in either Word or Long Word mode. Since the Z80 CPU architecture's addressing convention in the memory is "least significant byte first, followed by more significant bytes," it is possible to have such instructions to direct the instruction decoder to fetch additional byte(s) of address information or immediate data to extend the instruction. All eight combinations of the two options are supported, as shown below. Instructions which do not support decoder directives are assembled by the instruction decoder as if the decoder directive were not present. DDIR W DDIR IB,W DDIR IW,W DDIR IB DDIR LW DDIR IB,LW DDIR IW,LW DDIR IW Word mode Immediate byte, Word mode Immediate Word, Word mode Immediate byte Long Word mode Immediate byte, Long Word mode Immediate Word, Long Word mode Immediate Word The IB decoder directive causes the decoder to fetch an additional byte immediately after the existing immediate data or direct address, and in front of any trailing opcode bytes (with instructions starting with DD-CB or FD-CB, for example). Likewise, the IW decoder directive causes the decoder to fetch an additional word immediately after the existing immediate data or direct address, and in front of any trailing opcode bytes. Byte ordering within the instruction follows the usual convention; least significant byte first, followed by more significant bytes. More-significant immediate data or direct address bytes not specified in the instruction are read as all zeros by the processor. The W decoder directive causes the instruction decoder to tag the instruction for execution in Word mode. This is useful while the Long Word (LW) bit in the Select Register (SR) is set, but 16-bit data manipulation is required for this instruction. The LW decoder directive causes the instruction decoder to tag the instruction for execution in Long Word mode. This is useful while the LW bit in the SR is cleared, but 32bit data manipulation is required for this instruction. 3.3 NATIVE MODE AND EXTENDED MODE The Z380 CPU can operate in either Native or Extended mode, as a way to manipulate addresses. In Native mode (the Reset configuration), the Program Counter only increments across 16 bits, and all stack Push and Pop operations manipulate 16-bit quantities (two bytes). Thus, Native mode is fully compatible with the Z80 CPU's 64 Kbyte address space and programming model. The extended portion of the Program Counter (PC31PC15) is forced to 0 and program address location next to 0000FFFFH is 00000000H in this mode. This means in Native mode, program have to reside within the first 64 Kbytes of the memory addressing space. In Extended mode, however, the PC increments across all 32 bits and all stack Push and Pop operations manipulate 32-bit quantities. Thus, Extended mode allows access to the entire 4 Gbyte address space. In both Native and Extended modes, the Z380 CPU drives all 32 bits of the address onto the external address bus; only the PC increments and stack operations distinguish Native from Extended mode. 3-2 Note that regardless of Native or Extended mode, a 32-bit address is always used for the data access. Thus, for data reference, the complete 4 Gbytes of memory area may be accessed. For example: LD BC, (HL) uses the 32-bit address value stored in HL31-HL0 (HLz and HL) as a source location address. However, on Reset, the HL31-HL16 portion (HLz) initializes to 00H. Unless HLz is modified to other than 00H, operation of this instruction is identical to the one with the Z80 CPU. Modifying the extended portion of the register is done either by using a 32-bit load instruction (in Long Word mode, or with DDIR LW instructions), or using a 16-bit load instruction with SWAP instructions. DC-8297-03 Z380TM USER'S MANUAL ZILOG The Z380 CPU implements one instruction to switch to Extended mode from Native mode; SETC XM (set Extended mode) places the Z380 CPU in Extended mode. Once in Extended mode, only Reset can return it to Native mode. On Reset, the Z380 is in Native mode. Refer to Sections 4 and 5 for more examples. 3.4 WORD AND LONG WORD MODE OF OPERATION The Z380 CPU can operate in either Word or Long Word mode. In Word mode (the Reset configuration), all word operations manipulate 16-bit quantities, and are compatible with the Z80 CPU 16-bit operations. In the Long Word mode, all word operations can manipulate 32-bit quantities. Note that the Native/Extended and Word/Long Word selections are independent of one another, as Word/Long Word pertains to data and operand address manipulation only. The Z380 CPU implements two instructions and two decoder directives to allow switching between these two modes; SETC LW (Set Long Word) and RESC LW (Reset Long Word) perform a global switch, while DDIR LW and DDIR W are decoder directives that select a particular mode only for the instruction that they precede. 2. Immediate data load with DDIR instructions DDIR IW,LW LD HL,12345678H Loads 12345678H into HL31-HL0. DDIR IB,LW LD HL,123456H Loads 00123456H into HL31-HL0. 00H is appended as the Most significant byte as HL31-HL24. DDIR LW LD HL,1234H Examples: 1. Effect of Word mode and Long Word mode Loads 00001234H into HL31-HL0. 0000H is appended as the HL31-HL16 portion. DDIR W LD BC, (HL) Loads BC15-BC0 from the location (HL) and (HL+1), and BCz (BC31-BC16) remains unchanged. DDIR LW LD BC, (HL) Loads BC31-BC0 from the locations (HL) to (HL+3). (c) 1994, 1995, 1996, 1997 by Zilog, Inc. All rights reserved. No part of this document may be copied or reproduced in any form or by any means without the prior written consent of Zilog, Inc. The information in this document is subject to change without notice. Devices sold by Zilog, Inc. are covered by warranty and patent indemnification provisions appearing in Zilog, Inc. Terms and Conditions of Sale only. ZILOG, INC. MAKES NO WARRANTY, EXPRESS, STATUTORY, IMPLIED OR BY DESCRIPTION, REGARDING THE INFORMATION SET FORTH HEREIN OR REGARDING THE FREEDOM OF THE DESCRIBED DEVICES FROM INTELLECTUAL PROPERTY INFRINGEMENT. ZILOG, INC. MAKES NO WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PURPOSE. Zilog, Inc. shall not be responsible for any errors that may appear in this document. Zilog, Inc. makes no commitment to update or keep current the information contained in this document. DC-8297-03 Zilog's products are not authorized for use as critical components in life support devices or systems unless a specific written agreement pertaining to such intended use is executed between the customer and Zilog prior to use. Life support devices or systems are those which are intended for surgical implantation into the body, or which sustains life whose failure to perform, when properly used in accordance with instructions for use provided in the labeling, can be reasonably expected to result in significant injury to the user. Zilog, Inc. 210 East Hacienda Ave. Campbell, CA 95008-6600 Telephone (408) 370-8000 Telex 910-338-7621 FAX 408 370-8056 Internet: http://www.zilog.com 3-3 Z380TM USER'S MANUAL ZILOG USER's MANUAL CHAPTER 4 ADDRESSING MODES AND DATA TYPES 4.1 INSTRUCTION An instruction is a consecutive list of one or more bytes in memory. Most instructions act upon some data; the term operand refers to the data to be operated upon. For Z380TM CPU instructions, operands can reside in CPU registers, memory locations, or I/O ports (internal or external). The method used to designate the location of the operands for an instruction are called addressing modes. The Z380 CPU supports seven addressing modes; Register, Immediate, Indirect Register, Direct Address, Indexed, Program Counter Relative Address, and Stack Pointer Relative. A wide variety of data types can be accessed using these addressing modes. 4.2 ADDRESSING MODE DESCRIPTIONS The following pages contain descriptions of the addressing modes for the Z380 CPU. Each description explains how the operand's location is calculated, indicates which address spaces can be accessed with that particular addressing mode, and gives an example of an instruction using that mode, illustrating the assembly language format for the addressing modes. 4.2.1 Register (R, RX) When this addressing mode is used, the instruction processes data taken from one of the 8-bit registers A, B, C, D, E, H, L, IXU, IXL, IYU, IYL, one of the 16-bit registers BC, DE, HL, IX, IY, SP, or one of the special byte registers I or R. Example of R mode: 1. Load register in Word mode. DDIR W ;Next instruction in Word mode LD BC,HL ;Load the contents of HL into BC Before instruction execution After instruction execution BCz BC HLz 1234 5678 9ABC DEF0 1234 DEF0 9ABC DEF0 2. Load register in Long Word mode. DDIR LW ;Next instruction in Long Word mode LD BC,HL ;Load the contents of HL into BC BCz BC HLz 1234 5678 9ABC DEF0 9ABC DEF0 9ABC DEF0 Storing data in a register allows shorter instructions and faster execution that occur with instructions that access memory. Before instruction execution After instruction execution Instruction OPERATION 4.2.2 Immediate (IM) REGISTER OPERAND The operand value is the contents of the register. The operand is always in the register address space. The register length (byte or word) is specified by the instruction opcode. In the case of Long Word register operation, it is specified either through the SETC LW instruction or the DDIR LW decoder directive. DC-8297-03 HL HL When the Immediate addressing mode is used, the data processed is in the instruction. The Immediate addressing mode is the only mode that does not indicate a register or memory address as the source operand. 4-1 Z380TM USER'S MANUAL ZILOG 4.2.2 Immediate (IM) (Continued) Instruction OPERATION OPERAND 2. Load 24-bit register DDIR IB, LW The operand value is in the instruction LD HL, 123456H Immediate mode is often used to initialize registers. Also, this addressing mode is affected by the DDIR Immediate Data Directives to expand the immediate value to 24 bits or 32 bits. Example of IM mode: immediate value into HL ;next instruction is in Long Word mode, with ;an additional immediate data ;load HLz, and HL with constant 123456H This case, the Z380 CPU appends 00H as a MSB byte. HLz 0987 0012 Before instruction execution After instruction execution HL 6543 3456 1. Load immediate value into accumulator LD A,55H ;Load hex 55 into the accumulator. Before instruction execution After instruction execution A 12 55 4.2.3 Indirect Register (IR) In Indirect Register addressing mode, the register specified in the instruction holds the address of the operand. Memory or Instruction OPERATION REGISTER The data to be processed is in the location specified by the BC, DE, or HL register (depending on the instruction) for memory accesses, or C register for I/O. Register Address I/O Port OPERAND The operand value is the contents of the location whose address is in the register. Depending on the instruction, the operand specified by IR mode is located in either the I/O address space (I/O instruction) or memory address space (all other instructions). Indirect Register mode can save space and reduce execution time when consecutive locations are referenced or one location is repeatedly accessed. This mode can also be used to simulate more complex addressing modes, since addresses can be computed before data is accessed. The address in this mode is always treated as a 32-bit mode. After reset, the contents of the extend registers (registers with "z" suffix) are initialized as 0's; hence, these instructions will be executed just as for the Z80/Z180. 4-2 Example of IR mode: 1. Load accumulator from the contents of memory pointed by (HL) LD A, (HL) ;Load the accumulator with the data ;addressed by the contents of HL Before instruction execution After instruction execution Memory location A HLz,HL 0F 12345678 0B 12345678 12345678 0B DC-8297-03 Z380TM USER'S MANUAL ZILOG 4.2.4 Direct Address (DA) When Direct Address mode is used, the data processed is at the location whose memory or I/O port address is in the instruction. Instruction OPERATION ADDRESS Memory or I/O Port OPERAND The operand value is the contents of the location whose address is in the instruction. Depending on the instruction, the operand specified by DA mode is either in the I/O address space (I/O instruction) or memory address space (all other instructions). This mode is also used by Jump and Call instructions to specify the address of the next instruction to be executed. (The address serves as an immediate value that is loaded into the program counter.) Also, DDIR Immediate Data Directives are used to expand the direct address to 24 or 32 bits. Operand width is affected by LW bit status for the load and exchange instructions. Example of DA mode: 1. Load BC register from memory location 00005E22H in Word mode LD BC, (5E22H) ;Load BC with the data in address ;00005E22H Before instruction execution After instruction execution Memory location BC 1234 0301 00005E22 00005E23 01 03 2. Load BC register from memory location 12345E22H in Word mode DDIR IW ;extend direct address by one word LD BC, (12345E22H) ;Load BC with the data in address ;12345E22H Before instruction execution After instruction execution Memory location BC 1234 0301 12345E22 12345E23 01 03 3. Load BC register from memory location 12345E22H in Long Word mode DDIR IW,LW ;extend direct address by one word, ;and operation in Long Word LD BC, (12345E22H) ;Load BC with the data in address ;12345E22H Before instruction execution After instruction execution Memory location DC-8297-03 BCz 1234 0705 BC 5678 0301 12345E22 12345E23 12345E24 12345E25 01 03 05 07 4-3 Z380TM USER'S MANUAL ZILOG 4.2.5 Indexed (X) When the Indexed addressing mode is used, the data processed is at the location whose address is the contents of IX or IY in use, offset by an 8-bit signed displacement in the instruction. The Indexed address is computed by adding the 8-bit two's complement signed displacement specified in the instruction to the contents of the IX or IY register in use, also specified by the instruction. Indexed addressing allows random access to tables or other complex data structures where the address of the base of the table is known, but the particular element index must be computed by the program. The offset portion can be expanded to 16 or 24 bits, instead of eight bits by using DDIR Immediate Data Directives (DDIR IB for 16-bit offset, DDIR IW for 24-bit offset). Note that computation of the effective address is affected by the operation mode (Native or Extended). In Native mode, address computation is done in modulo 216, and in Extended mode, address computation is done in modulo 232. Instruction REGISTER OPERATION REGISTER ADDRESS + OPERAND DISPLACEMENT _____________________________________ MEMORY Example of X mode: 1. Load accumulator from location (IX-1) in Native mode LD A, (IX-1) ;Load into the accumulator the ;contents of the memory location ;whose address is one less than ;the contents of IX ;Assume it is in Native mode Before instruction execution After instruction execution A 01 23 IXz 0001 0001 Memory location 0001FFFF 23 Address calculation: In Native mode, 0FFH encoding in the instruction is sign extended to a 16-bit value before the address calculation, but calculation is done in modulo 216 and does not take into account the index register's extended portion. 4-4 IX 0000 0000 + 0000 FFFF FFFF DC-8297-03 Z380TM USER'S MANUAL ZILOG 2. Load accumulator from location (IX-1) in Extended mode SETC XM ;Set Extended mode LD A, (IX-1) ;Load into the accumulator the ;contents of the memory location ;whose address is one less than ;the contents of IX Before instruction execution After instruction execution A 01 23 IXz 0001 0001 Memory location 0000FFFF 23 IX 0000 0000 Address calculation: In Extended mode, 0FFH encoding in the instruction is sign extended to a 32-bit value before the address calculation, but calculation is done in modulo 232 and takes into account the index register's extended portion. + 00010000 FFFFFFFF 0000FFFF 4.2.6 Program Counter Relative Mode (RA) The Program Counter Relative Addressing mode is used by certain program control instructions to specify the address of the next instruction to be executed (specifically, the sum of the Program Counter value and the displacement value is loaded into the Program Counter). Relative addressing allows reference forward or backward from the current Program Counter value; it is used for program control instructions such as Jumps and Calls that access constants in the memory. Note that computation of the effective address is affected by the mode of operation (Native or Extended). In Native mode, address computation is done in modulo 216, and the PC Extend (PC31-PC16) is forced to 0 and will not affect this portion. In Extended mode, address computation is done is modulo 232, and will affect the contents of PC extend if there is a carry or borrow operation. As a displacement, an 8-bit, 16-bit, or 24-bit value can be used. The address to be loaded into the Program Counter is computed by adding the two's complement signed displacement specified in the instruction to the current Program Counter. Also, in Native mode, Instruction PC OPERATION ADDRESS DISPLACEMENT + -- MEMORY OPERAND Example of RA mode: 1. Jump relative in Native mode, 8-bit displacement JR DC-8297-03 $-2 ;Jumps to the location ;(Current PC value) - 2 ;'$' represents for current PC value ;This instruction jumps to itself. ;since after the execution of this instruction, ;PC points to the next instruction. 4-5 Z380TM USER'S MANUAL ZILOG 4.2.6 Program Counter Relative Mode (RA) (Continued) Before instruction execution After instruction execution PCz 0000 0000 PC 1000 0FFE Address calculation: In Native mode, -2 is encoded as 0FEH in the instruction, and it is sign extended to a 16-bit value before added to the Program Counter. Calculation is done in modulo 216 and does not affect the Extended portion of the Program Counter. + 1000 FFFE FFFE 2. Jump relative in Extended mode, 16-bit displacement SETC JR XM $-5000H ;Put it in Extended mode of operation ;Jumps to the location ;(Current PC value) - 5000H ;$ stands for current PC value ;This instruction jumps to itself. Before instruction execution After instruction execution PCz 1959 1958 PC 0807 B80B Address calculation: Since this is a 4-byte instruction, the PC value after fetch but before jump taking place is: + 19590807 00000004 1959080B The displacement portion, -5000H, is sign extended to a 32-bit value before being added to the Program Counter. Calculation is done in modulo 232 and affects the Extended portion of the Program Counter. + 4-6 1959080B FFFFB000 1958B80B DC-8297-03 Z380TM USER'S MANUAL ZILOG 4.2.7 Stack Pointer Relative Mode (SR) For Stack Pointer Relative addressing mode, the data processed is at the location whose address is the contents of the Stack Pointer, offset by an 8-bit displacement in the instruction. The Stack Pointer Relative address is computed by adding the 8-bit two's complement signed displacement specified in the instruction to the contents of the SP, also specified by the instruction. Stack Pointer Relative addressing mode is used to specify data items to be found in the stack, such as parameters passed to procedures. Note that computation of the effective address is affected by the operation mode (Native or Extended). In Native mode, address computation is done in modulo 216, meaning computation is done in 16-bit and does not affect upper half of the SP portion for calculation (wrap around within the 16-bit). In Extended mode, address computation is done in modulo 232. Also, the size of the data transfer is affected by the LW mode bit. In Word mode, transfer is done in 16 bits, and in Long Word mode, transfer is done in 32 bits. Offset portion can be expanded to 16 or 24 bits by using DDIR immediate instructions (DDIR IB for a 16-bit offset, DDIR IW for a 24-bit offset). Instruction OPERATION DISPLACEMENT SP ADDRESS ----| ----+ MEMORY OPERAND Example of SR mode: 1. Load HL from location (SP - 4) in Native mode, Word mode LD HL, (SP-4) ;Load into the HL from the ;contents of the memory location ;whose address is four less than ;the contents of SP. ;Assume it is in Native/Word mode. Before instruction execution After instruction execution Memory location HLz HL 1234 5678 EFCD AB89 SPz 07FF 07FF 07FF7EFC 07FF7EFD 89 AB Address calculation: In Native mode, FCH (-4 in Decimal) encoding in the instruction is sign extended to a 16-bit value before the address calculation. Calculation is done in modulo 216 and does not take into account the Stack Pointer's extended portion. DC-8297-03 SP 7F00 7F00 + 7F00 FFFC 7EFC 4-7 Z380TM USER'S MANUAL ZILOG 4.2.7 Stack Pointer Relative Mode (SR) (Continued) 2. Load HL from location (SP - 4) in Extended mode, Long Word mode SETC XM ;In Extended mode DDIR LW ;operate next instruction in Long Word mode LD HL, (SP-4) ;Load into the HL from the ;contents of the memory location ;whose address is four less than ;the contents of SP. Before instruction execution After instruction execution Memory location HLz HL 1234 5678 EFCD AB89 07FF7EFC 07FF7EFD 07FF7EFE 07FF7EFF SPz 07FF 07FF SP 7F00 7F00 89 AB CD EF Address calculation: In Extended mode, FCH (-4 in Decimal) encoding in the instruction is sign extended to a 32bit value before the address calculation, and calculation is done in modulo 232. + 07FF7F00 FFFFFFFC 07FF7EFC 3. Load HL from location (SP + 10000H) in Extended mode, Long Word mode SETC XM ;In Extended mode, DDIR IW,LW ;operate next instruction in Long Word mode ;with a word immediate data. LD HL, (SP+10000) ;Load into the HL from the ;contents of the memory location ;whose address is 10000H more than ;the contents of SP. Before instruction execution After instruction execution Memory location HLz HL 1234 5678 EFCD AB89 08007F00 08007F01 08007F02 08007F03 SPz 07FF 07FF 89 AB CD EF Address calculation: In Extended mode, 010000H encoding in the instruction is sign extended to a 32-bit value before the address calculation, and calculation is done in modulo 232. 4-8 SP 7F00 7F00 + 07FF7F00 00010000 08007F00 DC-8297-03 Z380TM USER'S MANUAL ZILOG 4.3 DATA TYPES The Z380 CPU can operate on bits, binary-coded decimal (BCD) digits (four bits), bytes (eight bits), words (16 bits or 32 bits), byte strings, and word strings. Bits in registers can be set, cleared, and tested. The basic data type is a byte, which is also the basic accessible element in the register, memory, and I/O address space. The 8-bit load, arithmetic, logical, shift, and rotate instructions operate on bytes in registers or memory. Bytes can be treated as logical, signed numeric, or unsigned numeric value. Words are operated on in a similar manner by the word load, arithmetic, logical, and shift and rotate instructions. Operation on 2-byte words is also supported. Sixteen-bit load and arithmetic instructions operate on words in registers or memory; words can be treated as signed or unsigned numeric values. I/O reads and writes can be 8-bit or 16-bit operations. Also, the Z380 CPU architecture supports operation in Long Word mode to handle a 32-bit address manipulation. For that purpose, 16-bit wide registers originally on the Z80 have been expanded to 32 bits wide, along with the support of the arithmetic instruction needed for a 32-bit address manipulation. Operation on binary-coded decimal (BCD) digits are supported by Decimal Adjust Accumulator (DAA) and Rotate Digit (RLD and RRD) instructions. BCD digits are stored in byte registers or memory locations, two per byte. The DAA instruction is used after a binary addition or subtraction of BCD numbers. Rotate Digit instructions are used to shift BCD digit strings in memory. Strings of up to 65536 (64K) bytes of Byte data or Word data can be manipulated by the Z380 CPU's block move, block search, and block I/O instructions. The block move instructions allow strings of bytes/words in memory to be moved from one location to another. Block search instructions provide for scanning strings of bytes/words in memory to locate a particular value. Block I/O instructions allow strings of bytes or words to be transferred between memory and a peripheral device. Arrays are supported by Indexed mode (with 8-bit, 16-bit, or 24-bit displacement). Stack is supported by the Indexed and the Stack Pointer Relative addressing modes, and by special instructions such as Call, Return, Push, and Pop. Bits are fully supported and addressed by number within a byte (see Figure 2-2). Bits within byte registers or memory locations can be tested, set, or cleared. (c) 1994, 1995, 1996, 1997 by Zilog, Inc. All rights reserved. No part of this document may be copied or reproduced in any form or by any means without the prior written consent of Zilog, Inc. The information in this document is subject to change without notice. Devices sold by Zilog, Inc. are covered by warranty and patent indemnification provisions appearing in Zilog, Inc. Terms and Conditions of Sale only. ZILOG, INC. MAKES NO WARRANTY, EXPRESS, STATUTORY, IMPLIED OR BY DESCRIPTION, REGARDING THE INFORMATION SET FORTH HEREIN OR REGARDING THE FREEDOM OF THE DESCRIBED DEVICES FROM INTELLECTUAL PROPERTY INFRINGEMENT. ZILOG, INC. MAKES NO WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PURPOSE. Zilog, Inc. shall not be responsible for any errors that may appear in this document. Zilog, Inc. makes no commitment to update or keep current the information contained in this document. DC-8297-03 Zilog's products are not authorized for use as critical components in life support devices or systems unless a specific written agreement pertaining to such intended use is executed between the customer and Zilog prior to use. Life support devices or systems are those which are intended for surgical implantation into the body, or which sustains life whose failure to perform, when properly used in accordance with instructions for use provided in the labeling, can be reasonably expected to result in significant injury to the user. Zilog, Inc. 210 East Hacienda Ave. Campbell, CA 95008-6600 Telephone (408) 370-8000 Telex 910-338-7621 FAX 408 370-8056 Internet: http://www.zilog.com 4-9 Z380TM USER'S MANUAL ZILOG USER's MANUAL CHAPTER 5 INSTRUCTION SET 5.1 INTRODUCTION The Z380TM CPU instruction set is a superset of the Z80 CPU and the Z180 MPU; the Z380 CPU is opcode compatible with the Z80 CPU/Z180 MPU. Thus, a Z80/Z180 program can be executed on a Z380 CPU without modification. The instruction set is divided into 12 groups by function: Program Control Group Input and Output Operations for External I/O Space Input and Output Operations for Internal I/O Space 8-Bit Load/Exchange Group CPU Control Group 16/32-Bit Load, Exchange, SWAP and Push/Pop Group Decoder Directives Block Transfers, and Search Group 8-Bit Arithmetic and Logic Operations 16/32-Bit Arithmetic Operations 8-Bit Bit Manipulation, Rotate and Shift Group 16-Bit Rotates and Shifts This chapter describes the instruction set of the Z380 CPU. Flags and condition codes are discussed in relation to the instruction set. Then, the interpretability of instructions and trap are discussed. The last part of this chapter is a detailed description of each instruction, listed in alphabetical order by mnemonic. This section is intended as a reference for Z380 CPU programmers. The entry for each instruction contains a complete description of the instruction, including addressing modes, assembly language mnemonics, and instruction opcode formats. 5.2 PROCESSOR FLAGS The Flag register contains six bits of status information that are set or cleared by CPU operations (Figure 5-1). Four of these bits are testable (C, P/V, Z, and S) for use with conditional jump, call, or return instructions. Two flags are not testable (H and N) and are used for binary-coded decimal (BCD) arithmetic. S Z X H X P/V N C 7 6 5 4 3 2 1 0 The Flag register provides a link between sequentially executed instructions, in that the result of executing one instruction may alter the flags, and the resulting value of the flags can be used to determine the operation of a subsequent instruction. The program control instructions, whose operation depends on the state of the flags, are the Jump, Jump Relative, subroutine Call, Call Relative, and subroutine Return instructions; these instructions are referred to as conditional instructions. Figure 5-1. Flag Register DC-8297-03 5-1 Z380TM USER'S MANUAL ZILOG 5.2.1 Carry Flag (C) The Carry flag is set or cleared depending on the operation being performed. For add instructions that generate a carry and subtract instruction generating a borrow, the Carry flag is set to 1. The Carry flag is cleared to 0 by an add that does not generate a carry or a subtract that generates no borrow. This saved carry facilitates software routines for extended precision arithmetic. The multiply instructions use the Carry flag to signal information about the precision of the result. Also, the Decimal Adjust Accumulator (DAA) instruction leaves the Carry flag set to 1 if a carry occurs when adding BCD quantities. For rotate instructions, the Carry flag is used as a link between the least significant and most significant bits for any register or memory location. During shift instructions, the Carry flag contains the last value shifted out of any register or memory location. For logical instructions the Carry flag is cleared. The Carry flag can also be set and complemented with explicit instructions. 5.2.2 Add/Subtract Flag (N) The Add/Subtract flag is used for BCD arithmetic. Since the algorithm for correcting BCD operations is different for addition and subtraction, this flag is used to record when an add or subtract was last executed, allowing a subsequent Decimal Adjust Accumulator instruction to perform correctly. See the discussion of the DAA instruction for further information. 5.2.3 Parity/Overflow Flag (P/V) This flag is set to a particular state depending on the operation being performed. For signed arithmetic, this flag, when set to 1, indicates that the result of an operation on two's complement numbers has exceeded the largest number, or less than the smallest number, that can be represented using two's complement notation. This overflow condition can be determined by examining the sign bits of the operands and the result. The P/V flag is also used with logical operations and rotate instructions to indicate the parity of the result. The of bits set to 1 in a byte are counted. If the total is odd, this flag is reset indicates odd parity (P = 0). If the total is even, this flag is set indicates even parity (P = 1). During block search and block transfer instructions, the P/ V flag monitors the state of the Byte Count register (BC). When decrementing the byte counter results in a zero value, the flag is cleared to 0; otherwise the flag is set to 1. 5-2 During Load Accumulator with I or R register instruction, the P/V flag is loaded with the IEF2 flag. For details on this topic,.refer to Chapter 6, "Interrupts and Traps." When a byte is inputted to a register from an I/O device addressed by the C register, the flag is adjusted to indicate the parity of the data. 5.2.4 Half-Carry Flag (H) The Half-Carry flag (H) is set to 1 or cleared to 0 depending on the carry and borrow status between bits 3 and 4 of an 8-bit arithmetic operation and between bits 11 and 12 of a 16-bit arithmetic operation. This flag is used by the Decimal Adjust Accumulator instruction to correct the result of an addition or subtraction operation on packed BCD data. 5.2.5 Zero Flag (Z) The Zero flag (Z) is set to 1 if the result generated by the execution of certain instruction is a zero. For arithmetic and logical operations, the Zero flag is set to 1 if the result is zero. If the result is not zero, the Zero flag is cleared to 0. For block search instructions, the Zero flag is set to 1 if a comparison is found between the value in the Accumulator and the memory location pointed to by the contents of the register pair HL. When testing a bit in a register or memory location, the Zero flag contains the complemented state of the tested bit (i.e., the Zero flag is set to 1 if the tested bit is a 0, and viceversa). For block I/O instructions, if the result of decrements B is zero, the Zero flag is set to 1; otherwise, it is cleared to 0. Also, for byte inputs to registers from I/O devices addressed by the C register, the Zero flag is set to 1 to indicate a zero byte input. 5.2.6 Sign Flag (S) The Sign flag (S) stores the state of the most significant bit of the result. When the Z380 CPU performs arithmetic operation on signed numbers, binary two's complement notation is used to represent and process numeric information. A positive number is identified by a 0 in the most significant bit. A negative number is identified by a 1 in the most significant bit. When inputting a byte from an I/O device addressed by the C register to a CPU register, the Sign flag indicates either positive (S = 0) or negative (S = 1) data. DC-8297-03 Z380TM USER'S MANUAL ZILOG 5.2.7 Condition Codes The Carry, Zero, Sign, and Parity/Overflow flags are used to control the operation of the conditional instructions. The operation of these instructions is a function of the state of one of the flags. Special mnemonics called condition codes are used to specify the flag setting to be tested during execution of a conditional instruction; the condition codes are encoded into a 3-bit field in the instruction opcode itself. Table 5-1 lists the condition code mnemonic, the flag setting it represents, and the binary encoding for each condition code. Table 5-1. Condition codes Condition Codes for Jump, Call, and Return Instructions Mnemonic Meaning Flag Setting Binary Code NZ Z NC C NV PO V PE NS P S M 000 001 010 011 100 100 101 101 110 110 111 111 Not Zero* Zero* No Carry* Carry* No Overflow Parity Odd Overflow Parity Even No Sign Plus Sign Minus Z=0 Z=1 C=0 C=1 V=0 V=0 V=1 V=1 S=0 S=0 S=1 S=1 *Abbreviated set Condition Codes for Jump Relative and Call Relative Instructions Mnemonic Meaning Flag Setting Binary Code NZ Z NC C 100 101 110 111 DC-8297-03 Not Zero Zero No Carry Carry Z=0 Z=1 C=0 C=1 5-3 Z380TM USER'S MANUAL ZILOG 5.3 SELECT REGISTER The Select Register (SR) controls the register set selection and the operating modes of the Z380 CPU. The reserved bits in the SR are for future expansion; they will always read as zeros and should be written with zeros for future compatibility. Access to this register is done by using the newly added LDCTL instruction. Also, some of the instructions like EXX, IM p, and DI/EI change the bit(s). The SR was shown in Figure 5-2. YSR XSR Reserved (0) 31 30 29 28 27 IYBANK IYP 26 25 24 23 22 21 MAINBANK ALT XM LW IEF1 8 7 6 5 IXBANK Reserved (0) 20 19 IXP 18 17 0 LCK 2 1 16 DSR Reserved (0) 15 14 13 12 11 10 9 IM 4 3 AFP 0 Figure 5-2. Select Register 5.3.1. IY Bank Select (IYBANK) 5.3.5. Main Bank Select (MAINBANK) This 2-bit field selects the register set to be used for the IY and IY' registers. This field can be set independently of the register set selection for the other Z380 CPU registers. Reset selects Bank 0 for IY and IY'. This 2-bit field selects the register set to be used for the A, F, BC, DE, HL, A', F', BC', DE', and HL' registers. This field can be set independently of the register set selection for the other Z380 CPU registers. Reset selects Bank 0 for these registers. 5.3.2. IY or IY' Register Select (IY') This bit controls and reports whether IY or IY' is the currently active register. IY is selected when this bit is cleared, and IY' is selected when this bit is set. Reset clears this bit, selecting IY. 5.3.3. IX Bank Select (IXBANK) This 2-bit field selects the register set to be used for the IX and IX' registers. This field can be set independently of the register set selection for the other Z380 CPU registers. Reset selects Bank 0 for IX and IX'. 5.3.4. IX or IX' Register Select (IX') This bit controls and reports whether IX or IX' is the currently active register. IX is selected when this bit is cleared, and IX' is selected when this bit is set. Reset clears this bit, selecting IX. 5-4 5.3.6. BC/DE/HL or BC'/DE'/HL' Register Select (ALT) This bit controls and reports whether BC/DE/HL or BC'/DE'/ HL' is the currently active bank of registers. BC/DE/HL is selected when this bit is cleared, and BC'/DE'/HL' is selected when this bit is set. Reset clears this bit, selecting BC/DE/HL. 5.3.7. Extended Mode (XM) This bit controls the Extended/Native mode selection for the Z380 CPU. This bit is set by the SETC XM instruction. This bit can not be reset by software, only by Reset. When this bit is set, the Z380 CPU is in Extended mode. Reset clears this bit, and the Z380 CPU is in Native mode. DC-8297-03 Z380TM USER'S MANUAL ZILOG 5.3.8. Long Word Mode (LW) 5.3.11. Lock (LCK) This bit controls the Long Word/Word mode selection for the Z380 CPU. This bit is set by the SETC LW instruction and cleared by the RESC LW instruction. When this bit is set, the Z380 CPU is in Long Word mode; when this bit is cleared the Z380 CPU is in Word mode. Reset clears this bit. Note that individual Word load and exchange instructions may be executed in either Word or Long Word mode using the DDIR W and DDIR LW decoder directives. This bit controls the Lock/Unlock status of the Z380 CPU. This bit is set by the SETC LCK instruction and cleared by the RESC LCK instruction. When this bit is set, no bus requests will be accepted, providing exclusive access to the bus by the Z380 CPU. When this bit is cleared, the Z380 CPU will grant bus requests in the normal fashion. Reset clears this bit. 5.3.12. AF or AF' Register Select (AF') 5.3.9. Interrupt Enable Flag (IEF) This bit is the master Interrupt Enable for the Z380 CPU. This bit is set by the EI instruction and cleared by the DI instruction, or on acknowledgment of an interrupt request. When this bit is set, interrupts are enabled; when this bit is cleared, interrupts are disabled. Reset clears this bit. This bit controls and reports whether AF or AF' is the currently active pair of registers. AF is selected when this bit is cleared, and AF' is selected when this bit is set. Reset clears this bit, selecting AF. 5.3.10. Interrupt Mode (IM) This 2-bit field controls the interrupt mode for the /INT0 interrupt request. These bits are controlled by the IM instructions (00 = IM 0, 01 = IM 1, 10 = IM 2, 11 = IM 3). Reset clears both of these bits, selecting Interrupt Mode 0. 5.4 INSTRUCTION EXECUTION AND EXCEPTIONS Three types of exception conditions--interrupts, trap, and Reset--can alter the normal flow of program execution. Interrupts are asynchronous events generated by a device external to the CPU; peripheral devices use interrupts to request service from the CPU. Trap is a synchronous event generated internally in the CPU by executing undefined instructions. Reset is an asynchronous event generated by outside circuits. It terminates all current activities and puts the CPU into a known state. Interrupts and Traps are discussed in detail in Chapter 6, and Reset is discussed in detail in Chapter 7. This section examines the relationship between instructions and the exception conditions. 5.4.1 Instruction Execution and Interrupts When the CPU receives an interrupt request, and it is enabled for interrupts of that class, the interrupt is normally processed at the end of the current instruction. However, the block transfer and search instructions are designed to be interruptible so as to minimize the length of time it takes the CPU to respond to an interrupt. If an interrupt request is received during a block move, block search, or block I/O instruction, the instruction is suspended after the current iteration. The address of the instruction itself, rather than the address of the following instruction, is saved on the stack, so that the same instruction is executed again when the interrupt handler executes an interrupt return DC-8297-03 instruction. The contents of the repetition counter and the registers that index into the block operands are such that, after each iteration, when the instruction is reissued upon returning from an interrupt, the effect is the same as if the instruction were not interrupted. This assumes, of course, that the interrupt handler preserves the registers. 5.4.2 Instruction Execution and Trap The Z380 MPU generates a Trap when an undefined opcode is encountered. The action of the CPU in response to Trap is to jump to address 00000000H with the status bit(s) set. This response is similar to the Z180 MPU's action on execution of an undefined instruction. The Trap is enabled immediately after reset, and it is not maskable. This feature can be used to increase software reliability or to implement "extended" instructions. An undefined opcode can be fetched from the instruction stream, or it can be returned as a vector in an interrupt acknowledge transaction in Interrupt mode 0. Since it jumps to address 00000000H, it is necessary to have a Trap handling routine at the beginning of the program if processing is to proceed. Otherwise, it behaves just like a reset for the CPU. For a detailed description, refer to Chapter 6. 5-5 Z380TM USER'S MANUAL ZILOG 5.5 INSTRUCTION SET FUNCTIONAL GROUPS This section presents an overview of the Z380 instruction set, arranged by functional groups. (See Section 5.5 for an explanation of the notation used in Tables 5-2 through 511). An Exchange instruction is available for swapping the contents of the accumulator with another register or with memory, as well as between registers. Also, exchange instructions are available which swap the contents of the register in the primary register bank and auxiliary register bank. 5.5.1 8-Bit Load/Exchange Group This group of instructions (Table 5-2) includes load instructions for transferring data between byte registers, transferring data between a byte register and memory, and loading immediate data into byte register or memory. For the supported source/destination combinations, refer to Table 5-3. The instruction in this group does not affect the flags. Table 5-2. 8-Bit Load Group Instructions Instruction Name Format Note Exchange with Accumulator EX A,r EX A,(HL) EX r,r' LD A,src LD dst,A LD dst,n LD (HL),n LD R,src LD R,(HL) LD dst,R LD (HL),R r=A, B, C, D, E, H or L See Table 5-3 See Table 5-3 See Table 5-3 See Table 5-3 See Table 5-3 See Table 5-3 See Table 5-3 See Table 5-3 Exchange r and r' Load Accumulator Load Immediate Load Register (Byte) Table 5-3. 8-Bit Load Group Allowed Source/Destination Combinations Source Dist. A B C D E H L IXH IXL IYH IYL n (nn) (BC) (DE) (HL) (IX+d) (IY+d) A B C D E H L IXH IXL IYH IYL (BC) (DE) (HL) (nn) (IX+d) (IY+d) Note: are supported combinations. 5-6 DC-8297-03 Z380TM USER'S MANUAL ZILOG 5.5.2 16-Bit and 32-Bit Load, Exchange, SWAP, and PUSH/POP Group This group of load, exchange, and PUSH/POP instructions (Table 5-4) allows one or two words of data (two bytes equal one word) to be transferred between registers and memory. The exchange instructions (Table 5-5) allow for switching between the primary and alternate register files, exchanging the contents of two register files, exchanging the contents of an addressing register with the top word on the stack. For possible combinations of the word exchange instructions, refer to Table 5-5. The 16-bit and 32-bit loads include transfer between registers and memory and immediate loads of registers or memory. The Push and Pop stack instructions are also included in this group. None of these instructions affect the CPU flags, except for EX AF, AF'. Table 5-6 has the supported source/destination combination for the 16-bit and 32-bit load instructions. The transfer size, 16-bit or 32-bit, is determined by the status of LW bit in SR, or by DDIR Decoder Directives. PUSH/POP instructions are used to save/restore the contents of a register onto the stack. It can be used to exchange data between procedures, save the current register file on context switching, or manipulate data on the stack, such as return addresses. Supported sources are listed in Table 5-7. Swap instructions allows swapping of the contents of the Word wide register (BC, DE, HL, IX, or IY) with its Extended portion. These instructions are useful to manipulate the upper word of the register to be set in Word mode. For example, when doing data accesses, other than 00000000H-0000FFFFH address range, use this instruction to set "data frame" addresses. This group of instructions is affected by the status of the LW bit in SR (Select Register), and Decoder Directives which specifies the operation mode in Word or Long Word. Table 5-4. 16-Bit and 32-Bit Load, Exchange, PUSH/POP Group Instructions Instruction Name Format Note Exchange Word/Long Word Registers Exchange Byte/Word Registers with Alternate Bank Exchange Register Pair with Alternate Bank EX dst,src EXX EX RR,RR' See Table 5-5 Exchange Index Register with Alternate Bank EXXX EXXY EXALL LD dst,src LDW dst,src POP dst PUSH src SWAP dst Exchange All Registers with Alternate Bank Load Word/Long Word Registers POP PUSH Swap Contents of D31-D16 and D15-D0 Table 5-5. Supported Source and Destination Combination for 16-Bit and 32-Bit Exchange Instructions Source HL Destination BC DE BC DE HL IX (SP) DC-8297-03 IX IY RR = AF, BC, DE, or HL See Table 5-6 See Table 5-6 See Table 5-7 See Table 5-7 dst = BC, DE, HL, IX, or IY Note: are supported combinations. The exchange instructions which designate IY register as destination are covered by the other combinations. These Exchange Word instructions are affected by Long Word mode. 5-7 Z380TM USER'S MANUAL ZILOG 5.5.2 16-Bit and 32-Bit Load, Exchange, SWAP and PUSH/POP Group (Continued) Table 5-6. Supported Source and Destination Combination for 16-Bit and 32-Bit Load Instructions. Destination BC DE HL IX IY SP (BC) (DE) (HL) (nn) (IX+d) (IY+d) (SP+d) Source BC DE L L L L L L L L L L L L L IL IL IL IL L L L IL IL IL IL HL IX IY L L L L L L L L L IL IL IL IL L L L L L L L L L L L L IL L L L L IL IL IL IL SP nn (nn) (BC) (DE) (HL) (IX+d) (IY+d) (SP+d) IL IL IL IL IL IL ILW ILW ILW IL IL IL IL IL IL L L L L L L L L L L IL IL IL L L L L L IL IL IL IL IL IL IL IL IL IL IL IL Note: The column with the character(s) are the allowed source/destination combinations. The combination with "L" means that the instruction is affected by Long Word mode, "I" means that the instruction is can be used with DDIR Immediate instruction. Also, "W" means the instruction uses the mnemonic of "LDW" instead of "LD". Table 5-7. Supported Operand for PUSH/POP Instructions PUSH POP AF BC DE HL IX IY SR nn Note: These PUSH/POP instructions are affected by Long Word mode of operations. 5.5.3 Block Transfer and Search Group This group of instructions (Table 5-8) supports block transfer and string search functions. Using these instructions, a block of up to 65536 bytes of byte, Word, or Long Word data can be moved in memory, or a byte string can be searched until a given value is found. All the operations can proceed through the data in either direction. Furthermore, the operations can be repeated automatically while decrementing a length counter until it reaches zero, or they can operate on one storage unit per execution with the length counter decremented by one and the source and destination pointer register properly adjusted. The latter form is useful for implementing more complex operations in software by adding other instructions within a loop containing the block instructions. 5-8 Various Z380 CPU registers are dedicated to specific functions for these instructions--the BC register for a counter, the DEz/DE and HLz/HL registers for memory pointers, and the accumulator for holding the byte value being sought. The repetitive forms of these instructions are interruptible; this is essential since the repetition count can be as high as 65536. The instruction can be interrupted after any interaction, in which case the address of the instruction itself, rather than next one, is saved on the stack. The contents of the operand pointer registers, as well as the repetition counter, are such that the instruction can simply be reissued after returning from the interrupt without any visible difference in the instruction execution. In case of Word or Long Word block transfer instructions, the counter value held in the BC register is decremented by two or four, depending on the LW bit status. Since exiting from these instructions will be done when counter value gets to 0, the count value stored in the BC registers DC-8297-03 Z380TM USER'S MANUAL ZILOG has to be an even number (D0 = 0) in Word mode transfer, and a multiple of four in Long Word mode (D1 and D0 are both 0). Also, in Word or Long Word Block transfer, memory pointer values are recommended to be even numbers so the number of the transactions will be minimized. Note that regardless of the Z380's operation mode, Native or Extended, memory pointer increment/decrement will be done in modulo 232. For example, if the operation is LDI and HL31-HL0 (HLz and HL) hold 0000FFFF, after the operation the value in the HL31-HL0 will be 0010000. 5.5.4 8-bit Arithmetic and Logical Group This group of instructions (Table 5-9) perform 8-bit arithmetic and logical operations. The Add, Add with Carry, Subtract, Subtract with Carry, AND, OR, Exclusive OR, and Compare takes one input operand from the accumulator and the other from a register, from immediate data in the instruction itself, or from memory. For memory addressing modes, follows are supported--Indirect Register, Indexed, and Direct Address--except multiplies, which returns the 16-bit result to the same register by multiplying the upper and lower bytes of one of the register pair (BC, DE, HL, or SP). Table 5-8. Block Transfer and Search Group Instruction Name Format Compare and Decrement CPD Compare, Decrement and Repeat CPDR Compare and Increment CPI Compare, Increment and Repeat CPIR Load and Decrement LDD Load , Decrement and Repeat LDDI Load and Increment LDI Load, Increment and Repeat LDIR Load and Decrement in Word/Long Word LDDW Load, Decrement and Repeat in Word/Long Word LDDRW Load and Increment in Word/Long Word LDIW Load, Increment and Repeat in Word/Long Word LDIRW The Increment and Decrement instructions operate on data in a register or in memory; all memory addressing modes are supported. These instructions operate only on the accumulator--Decimal Adjust, Complement, and Negate. The final instruction in this group, Extend Sign, sets the CPU flags according to the computed result. The EXTS instruction extends the sign bit and leaves the result in the HL register. If it is in Long Word mode, HLz (HL31-HL16) portion is also affected. The TST instruction is a nondestructive AND instruction. It ANDs "A" register and source, and changes flags according to the result of operation. Both source and destination values will be preserved. Table 5-9. Supported Source/Destination for 8-Bit Arithmetic and Logic Group Instruction Name Format src/ dst A B C D E H L IXH IXL IYH IYL n (HL) (IX+d) (IY+x) Add With Carry (Byte) Add (Byte) AND Compare (Byte) ADC A,src ADD A,src AND [A,]src CP [A,]src src src src src Complement Accumulator Decimal Adjust Accumulator Decrement (Byte) Extend Sign (Byte) CPL [A] DAA DEC dst EXTS [A] dst dst dst dst Increment (Byte) Multiply (Byte) Negate Accumulator OR INC dst MLT src NEG [A] OR [A,]src dst Note 1 dst src Subtract with Carry (Byte) Subtract (Byte) Nondestructive Test Exclusive OR SBC A,src SUB [A,]src TST dst XOR [A,]src src src src src Note 1: dst = BC, DE, HL, or SP. DC-8297-03 5-9 Z380TM USER'S MANUAL ZILOG 5.5.5 16-Bit Arithmetic Operation This group of instructions (Table 5-10) provide 16-bit arithmetic instructions. The Add, Add with Carry, Subtract, Subtract with Carry, AND, OR, Exclusive OR, and Compare takes one input operand from an addressing register and the other from a 16-bit register, or from the instruction itself; the result is returned to the addressing register. The 16-bit Increment and Decrement instructions operate on data found in a register or in memory; the Indirect Register or Direct Address addressing mode can be used to specify the memory operand. or Direct Address addressing mode. The 32-bit result of a multiply is returned to the HLz and HL (HL31-HL0). The unsigned divide instruction takes a 16-bit dividend from the HL register and a 16-bit divisor from a register, from the instruction, or memory using the Indexed mode. The 16-bit quotient is returned in the HL register and the 16-bit reminder is returned to the HLz (HL31-HL16). The Extend Sign instruction takes the contents of the HL register and delivers the 32-bit result to the HLz and HL registers. The Negate HL instruction negates the contents of the HL register. The remaining 16-bit instructions provide general arithmetic capability using the HL register as one of the input operands. The word Add, Subtract, Compare, and signed and unsigned Multiply instructions take one input operand from the HL register and the other from a 16-bit register, from the instruction itself, or from memory using Indexed Except for Increment, Decrement, and Extend Sign, all the instructions in this group set the CPU flags to reflect the computed result. Table 5-10. 16-Bit Arithmetic Operation Instruction Name Format src/ dst Add With Carry (Word) ADC HL,src ADCW [HL],src ADD HL,src ADD IX,src ADD IY,src ADDW [HL,]src ADD SP,nn ANDW [HL,]src CPLW [HL] CPW [HL,]src DEC[W] dst DIVUW [HL,]src EXTSW [HL] INC[W] dst MULT [HL,]src MULTUW [HL,]src NEGW [A] ORW [HL,]src SBC HL,src SBCW [HL],src SUB HL,(nn) SUBW [HL,]src SUB SP,nn XORW [HL,]src src src src src src src src src dst src dst src dst dst src src dst src src src src src src src Add (Word) Add to Stack Pointer AND Word Complement Accumulator Compare (Word) Decrement (Word) Divide Unsigned Extend Sign (Word) Increment (Word) Multiply Word Signed Multiply Word Unsigned Negate Accumulator OR Word Subtract with Carry (Word) Subtract (Word) Subtract from Stack Pointer Exclusive OR BC DE HL SP IX IY nn (nn) (IX+d) (IY+d) X X X X X X X X Note: that the instructions with "X" at the rightmost column is affected by Extended mode. These operate across all the 32 bits in Modulo 232 for address calculation. 5-10 DC-8297-03 Z380TM USER'S MANUAL ZILOG 5.5.6 8-Bit Manipulation, Rotate and Shift Group Instructions in this group (Table 5-11) test, set, and reset bits within bytes, and rotate and shift byte data one bit position. Bits to be manipulated are specified by a field within the instruction. Rotate can optionally concatenate the Carry flag to the byte to be manipulated. Both left and right shifting is supported. Right shifts can either shift 0 into bit 7 (logical shifts), or can replicate the sign in bits 6 and 7 (arithmetic shifts). All these instructions, Set Bit and Reset Bit, set the CPU flags according to the calculated result; the operand can be a register or a memory location specified by the Indirect Register or Indexed addressing mode. The RLD and RRD instructions are provided for manipulating strings of BCD digits; these rotate 4-bit quantities in memory specified by the Indirect Register. The low-order four bits of the accumulator are used as a link between rotation of successive bytes. Table 5-11. Bit Set/Reset/Test, Rotate and Shift Group Instruction Name Format A B C D E H L (HL) (IX+d) (IY+d) Bit Test Reset Bit Rotate Left Rotate Left Accumulator BIT dst RES dst RL dst RLA Rotate Left Circular Rotate Left Circular (Accumulator) Rotate Left Digit Rotate Right RLC dst RLCA RLD RR dst Rotate Right Accumulator Rotate Right Circular Rotate Right Circular (Accumulator) Rotate Right Digit RRA RRC dst RRCA RRD Set Bit Shift Left Arithmetic Shift Right Arithmetic Shift Right Logical SET dst SLA dst SRA dst SRL 5.5.7 16-Bit Manipulation, Rotate and Shift Group Instructions in this group (Table 5-12) rotate and shift word data one bit position. Rotate can optionally concatenate the Carry flag to the word to be manipulated. Both left and right shifting is supported. Right shifts can either shift 0 into bit 15 (logical shifts), or can replicate the sign in bits 14 and 15 (arithmetic shifts). The operand can be a register pair or memory location specified by the Indirect Register or Indexed addressing mode, as shown below. Table 5-12. 16-Bit Rotate and Shift Group. Instruction Name Format Rotate Left Word Rotate Left Circular Word Rotate Right Word Rotate Right Circular Word Shift Left Arithmetic Word Shift Right Arithmetic Word Shift Right Logical Word RLW dst RLCW dst RRW dst RRCW dst SLAW dst SRAW dst SRLW DC-8297-03 BC DE HL Destination IX IY (HL) (HL) (IX+d) (IY+d) 5-11 Z380TM USER'S MANUAL ZILOG 5.5.8 Program Control Group This group of instructions (Table 5-13) affect the Program Counter (PC) and thereby control program flow. The CPU registers and memory are not altered except for the Stack Pointer and the Stack, which play a significant role in procedures and interrupts. (An exception is Decrement and Jump if Non-Zero [DJNZ], which uses a register as a loop counter.) The flags are also preserved except for the two instructions specifically designed to set and complement the Carry flag. The Set/Reset Condition flag instructions can be used with Conditional Jump, conditional Jump Relative, Conditional Call, and Conditional Return instructions to control the program flow. The Jump and Jump Relative (JR) instructions provide a conditional transfer of control to a new location if the processor flags satisfy the condition specified in the instruction. Jump Relative, with an 8-bit offset (JR e), is a two byte instruction that jumps any instructions within the range -126 to +129 bytes from the location of this instruction. Most conditional jumps in programs are made to locations only a few bytes away; the Jump Relative, with an 8-bit offset, exploits this fact to improve code compactness and efficiency. Jump Relative, with a 16-bit offset (JR [cc,]ee), is a four byte instruction that jumps any instructions within the range -32765 to +32770 bytes from the location of this instruction, and Jump Relative, with a 24-bit offset (JR [cc,] eee), is a five byte instruction that jumps any instructions within the range -8388604 to +8388611 bytes from the location of this instruction. By using these Jump Relative instructions with 16-bit or 24-bit offsets allows to write relocatable (or location independent) programs. into the PC. The use of a procedure address stack in this manner allows straightforward implementation of nested and recursive procedures. Call, Jump, and Jump Relative can be unconditional or based on the setting of a CPU flag. Call Relative (CALR) instructions work just like ordinary Call instructions, but with Relative address. An 8-bit, 16bit, or 24-bit offset value can be used, and that allows to call procedure within the range of -126 to +129 bytes (8-bit offset;CALR [cc,]e), -32765 to +32770 bytes (16-bit offset; CALR [cc,]ee), or -8388604 to +8388611 bytes (JR [cc,] eee) are supported. These instructions are really useful to program relocatable programs. Jump is available with Indirect Register mode in addition to Direct Address mode. It can be useful for implementing complex control structures such as dispatch tables. When using Direct Address mode for a Jump or Call, the operand is used as an immediate value that is loaded into the PC to specify the address of the next instruction to be executed. The conditional Return instruction is a companion to the call instruction; if the condition specified in the instruction is satisfied, it loads the PC from the stack and pops the stack. A special instruction, Decrement and Jump if Non-Zero (DJNZ), implements the control part of the basic Pascal FOR loop which can be implemented in an instruction. It supports 8-bit, 16-bit, and 24-bit displacement. Note that Jump Relative, Call Relative, and DJNZ instructions use modulo 216 in Native mode, and 232 in Extended mode for address calculation. So it is possible that the Z380 CPU can jump to an unexpected address. Call and Restart are used for calling subroutines; the current contents of the PC are pushed onto the stack and the effective address indicated by the instruction is loaded Table 5-13. Program Control Group Instructions Instruction Name Format Call Complement Carry Flag Call Relative Decrement and Jump if Non-zero CALL cc,dst CCF CALR cc,dst DJNZ dst Jump JP cc,dst JP dst JR cc,dst RET cc RST p SCF Jump Relative Return Restart Set Carry Flag 5-12 nn (PC+d) (HL) (IX) (IY) DC-8297-03 ZILOG Z380TM USER'S MANUAL 5.5.9 External Input/Output Instruction Group the contents of C, E, or L appear D15-D7. These instructions do not affect the CPU flags. This group of instructions (Table 5-14) are used for transferring a byte, a word, or string of bytes or words between peripheral devices and the CPU registers or memory. Byte I/O port addresses transfer bytes on D7-D0 only. These 8bit peripherals in a 16-bit data bus environment must be connected to data line D7-D0. In an 8-bit data bus environment, word I/O instructions to external I/O peripherals should not be used; however, on-chip peripherals which is external to the CPU core and assigned as word I/O device can still be accessed by word I/O instructions. Also, there are I/O instructions available which allow to specify 16-bit absolute I/O address (with DDIR decoder directives, a 24-bit or 32-bit address is specified) is available. These instructions do not affect the CPU flags. The instructions for transferring a single byte (IN, OUT) can transfer data between any 8-bit CPU register or memory address specified in the instruction and the peripheral port specified by the contents of the C register. The IN instruction sets the CPU flags according to the input data; however, special instructions restricted to using the CPU accumulator and Direct Address mode and do not affect the CPU flags. Another variant tests an input port specified by the contents of the C register and sets the CPU flags without modifying CPU registers or memory. The remaining instructions in this group form a powerful and complete complement of instructions for transferring blocks of data between I/O ports and memory. The operation of these instructions is very similar to that of the block move instructions described earlier, with the exception that one operand is always an I/O port whose address remains unchanged while the address of the other operand (a memory location) is incremented or decremented.In Word mode of transfer, the counter (i.e., BC register) holds the number of transfers, rather than number of bytes to transfer in memory-to-memory word block transfer. Both byte and word forms of these instructions are available. The automatically repeating forms of these instructions are interruptible, like memory-to-memory transfer. The I/O addresses output on the address bus is dependant on the I/O instruction, as listed in Table 2-1. The instructions for transferring a single word (INW, OUTW) can transfer data between the register pair and the peripheral port specified by the contents of the C register. For Word I/O, the contents of B, D, or H appear on D7-D0 and DC-8297-03 5-13 Z380TM USER'S MANUAL ZILOG 5.5.9 External Input/Output Instruction Group (Continued) Table 5-14. External I/O Group Instructions. Instruction Name Format Input Input Accumulator Input to Word-Wide Register Input Byte from Absolute Address IN dst,(C) IN A,(n) INW dst,(C) INAW A,(nn) Input Word from Absolute Address Input and Decrement (Byte) Input and Decrement (Word) Input, Decrement, and Repeat (Byte) INAW HL,(nn) IND INDW INDR Input, Decrement, and Repeat (Word) Input and Increment (Byte) Input and Increment (Word) Input, Increment, and Repeat (Byte) INDRW INI INIW INIR Input, Increment, and Repeat (Word) Output Output Accumulator Output from Word-Wide Register INIRW OUT (C),src OUT (n),A OUTW (C), src Output Byte from Absolute Address Output Word from Absolute Address Output and Decrement (Byte) Output and Decrement (Word) OUTAW (nn),A OUTAW (nn),HL OUTD OUTDW Output, Decrement, and Repeat (Byte) Output, Decrement, and Repeat (Word) Output and Increment (Byte) Output and Increment (Word) Output, Increment, and Repeat (Byte) Output, Increment, and Repeat (Word) OTDR OTDRW OUTI OTIW OTIR OTIRW 5-14 dst=A, B, C, D, E, H or L dst=BC, DE or HL src = A, B, C, D, E, H, L, or n src = BC, DE, HL, or nn DC-8297-03 Z380TM USER'S MANUAL ZILOG 5.5.10 Internal I/O Instruction Group This group (Table 5-15) of instructions is used to access on-chip I/O addressing space on the Z380 CPU. This group consists of instructions for transferring a byte from/ to Internal I/O locations and the CPU registers or memory, or a blocks of bytes from the memory to the same size of Internal I/O locations for initialization purposes. These instructions are originally assigned as newly added I/O instructions on the Z180 MPU to access Page 0 I/O addressing space. There is 256 Internal I/O locations, and all of them are byte-wide. When one of these I/O instructions is executed, the Z380 MPU outputs the register address being accessed in a pseudo transaction of two BUSCLK durations cycle, with the address signals A31-A8 at 0. In the pseudo transactions, all bus control signals are at their inactive state. The instructions for transferring a single byte (IN0, OUT0) can transfer data between any 8-bit CPU register and the Internal I/O address specified in the instruction. The IN0 instruction sets the CPU flags according to the input data; however, special instructions which do not have a destina- tion in the instruction with Direct Address (IN0 (n)), do not affect the CPU register, but alters flags accordingly. Another variant, the TSTIO instruction, does a logical AND to the instruction operand with the internal I/O location specified by the C register and changes the CPU flags without modifying CPU registers or memory. The remaining instructions in this group form a powerful and complete complement of instructions for transferring blocks of data from memory to Internal I/O locations. The operation of these instructions is very similar to that of the block move instructions described earlier, with the exception that one operand is always an Internal I/O location whose address also increments or decrements by one automatically, Also, the address of the other operand (a memory location) is incremented or decremented. Since Internal I/O space is byte-wide, only byte forms of these instructions are available. Automatically repeating forms of these instructions are interruptible, like memory-tomemory transfer. Table 5-15. Internal I/O Instruction Group Instruction Name Format Input from Internal I/O Location Input from Internal I/O Location(Nondestructive) Test I/O Output to Internal I/O Location Output to Internal I/O and Decrement Output to Internal I/O and Increment Output to Internal I/O, Decrement and Repeat Output to Internal I/O, Increment and Repeat IN0 dst,(n) IN0 (n) TSTIO n OUT0 (n),src OTDM OTIM OTDMR OTIMR dst=A, B, C, D, E, H or L src=A, B, C, D, E, H or L Currently, the Z380 CPU core has the following registers as a part of the CPU core: Register Name Internal I/O address Interrupt Enable Register Assigned Vector Base Register Trap Register Chip Version ID Register 16H 17H 18H 0FFH Chip Version ID register returns one byte data, which indicates the version of the CPU, or the specific implementation of the Z380 CPU based Superintegration device. Currently, the value 00H is assigned to the Z380 MPU, and other values are reserved. Also, the Z380 MPU has registers to control chip selects, refresh, waits, and I/O clock divide to Internal I/O address 00H to 10H. For these register, refer to Z380 MPU Product specification. For the other three registers, refer to Chapter 6, "Interrupt and Trap." DC-8297-03 5-15 Z380TM USER'S MANUAL ZILOG 5.5.11 CPU Control Group The instructions in this group (Table 5-16) act upon the CPU control and status registers or perform other functions that do not fit into any of the other instruction groups. These include two instructions used for returning from an interrupt service routine. Return from Nonmaskable Interrupt (RETN) and Return from Interrupt (RETI) are used to pop the Program Counter from the stack and manipulate the Interrupt Enable Flag (IEF1 and IEF2), or to signal a reset to the Z80 peripherals family. The Disable and Enable Interrupt instructions are used to set/reset interrupt mask. Without a mask parameters, it disables/enables maskable interrupt globally. With mask data, it enables/disables interrupts selectively. HALT and SLEEP instructions stop the CPU and waits for an event to happen, or puts the system into the power save mode. into a flag register. For example, this instruction is useful to implement the recursive program, which uses the alternate bank to save a register for the first time, and saves registers into memory thereafter. Mode Test instructions reports the current mode of operation, Native/Extended, Word/Long Word, Locked or not. This instruction can be used to switch procedures depending on the mode of operation. Load Accumulator from R or I Register instructions are used to report current interrupt mask status. Load from/to register instructions are used to initialize the I register. Load Control register instructions are used to read/write the Status Register, set/reset control bit instructions and to set/reset the control bits in the SR. The No Operation instruction does nothing, and can be used as a filler, for debugging purposes, or for timing adjustment. Bank Test instructions reports which register file, primary or alternate bank, is in use at the time, and reflect the status Table 5-16. CPU Control Group Instruction Name Format Bank Test Disable Interrupt Enable Interrupt HALT Interrupt Mode Select Load Accumulator from I or R Register Load I or R Register from Accumulator Load I Register from HL Register Load HL Register from I Register Load Control Mode Test No Operation Return from Interrupt Return from Nonmaskable Interrupt Reset Control Bit Set Control Bit Sleep BTEST DI [mask] EI [mask] HALT IM p LD A,src LD dst,A LD[W] HL,I LD[W] HL,I LDCTL dst,src MTEST NOP RETI RETN RESC dst SETC dst SLP 5-16 dst=LCK, LW dst=LCK, LW, XM DC-8297-03 Z380TM USER'S MANUAL ZILOG 5.5.12 Decoder Directives The Decoder Directives (Table 5-17) are a special instructions to expand the Z80 instruction set to handle the Z380's 4 Gbytes of linear memory addressing space. For details on this instruction, refer to Chapter 3. Table 5-17. Decoder Directive Instructions DDIR W DDIR IB,W DDIR IW,W DDIR IB DDIR LW DDIR IB,LW DDIR IW,LW DDIR IW Word Mode Immediate Byte, Word Mode Immediate Word, Word Mode Immediate Byte Long Word Mode Immediate Byte, Long Word Mode Immediate Word, Long Word Mode Immediate Word 5.6 NOTATION AND BINARY ENCODING The rest of this chapter consists of a detailed description of the Z380 CPU instructions, arranged in alphabetical order by mnemonic. This section describes the notational conventions used in the instruction descriptions and the binary encoding for register fields within the instruction's operation codes (opcodes). The description of each instruction begins on a new page. The instruction mnemonic and name are printed in bold letters at the top of each page to enable the reader to easily locate a desired description. The assembly language syntax is then given in a single generic form that covers all the variants of the instruction, along with a list of applicable addressing modes. This is followed by a description of the operation performed by the instruction in "pseudo Pascal" fashion, a detailed description, a listing of all the flags that are affected by the instruction, and illustrations of the opcodes for all variants of the instruction. Symbols. The following symbols are used to describe the instruction set. n nn d src dst SR R IR RX SP (C) cc [] () An 8-bit constant A 16-bit constant An 8-bit offset. (two's complement) Source of the instruction Destination of the instruction Select Register Any register. In Word operation, any register pair. Any 8-bit register (A, B, C, D, E, H, or L) for Byte operation. Indirect register Indexed register (IX or IY) in Word operation, IXH, IXL, IYH, or IYL for Byte operation. Current Stack Pointer I/O Port pointed by C register Condition Code Optional field Indirect Address Pointer or Direct Address DC-8297-03 Assignment of a value is indicated by the symbol "". For example, dst dst + src indicates that the source data is added to the destination data and the result is stored in the destination location. The symbol "" indicates that the source and destination is swapping. For example, dst src indicates that the source data is swapped with the data in the destination; after the operation, data at "src" is in the "dst" location, and data in "dst " is in the "src" location. The notation "dst (b)" is used to refer to bit "b" of a given location, "dst(m-n)" is used to refer to bit location m to n of the destination. For example, HL(7) specifies bit 7 of the destination. and HL(23-16) specifies bit location 23 to 16 of the HL register. Flags. The F register contains the following flags followed by symbols. S Z H P/V N C Sign Flag Zero Flag Half Carry Flag Parity/Overflow Flag Add/Subtract Flag Carry Flag 5-17 Z380TM USER'S MANUAL ZILOG 5.6 NOTATION AND BINARY ENCODING (Continued) Condition Codes. The following symbols describe the condition codes. Z NZ C NC S NS NV V PE PO P M Zero* Not Zero* Carry* No Carry* Sign No Sign No Overflow Overflow Parity Even Parity Odd Positive Minus On the bottom of the each instruction, there are the field encodings, if applicable. For the cases which call out "per convention," then use the following encoding: r 000 001 010 011 100 101 111 Reg B C D E H L A To form the opcode, first, look for the "y" field value for IX register, which is 0. *Abbreviated set Field Encoding. For opcode binary format in the Tables, use the following convention: For example, to get the opcode format on the instruction LD (IX+12h), C Then find "r" field value for the C register, which is 001. Replace "y" and "r" field with the value from the table, replace "d" value with the real number. The results being: 76 543 210 11 011 101 01 110 001 00 010 010 HEX DD 71 21 First, find out the entry for "LD (XY+d),R". That entry has a opcode format of 11 y11 101 01 110 -r- d 5.7 EXECUTION TIME Table 5-18 details the execution time for each instruction encoding. All execution times are for instruction execution only. Clock cycles required for fetch and decode are not included because most of the time the clocks required for these operations occur in parallel with execution of the previous instruction(s). r in the execution time column indicates a memory read operation. The time required for a read operation is shown in the Table 5-18 below. i in the execution time column indicates an I/O read operation. The time required for a read operation is shown in the Table 5-18 below. o in the execution time column indicates an I/O write operation. The time required for a write operation is shown in the Table 5-18 below. All entries in the table below assume no wait states. The number of wait states per operation must be added to these numbers. w in the execution time column indicates a memory write operation. The time required for a write operation is shown in the Table 5-18 below. 5-18 DC-8297-03 Z380TM USER'S MANUAL ZILOG Table 5-18. Execution Time Operation Byte Word Word Long Long Long Long Long Sequence Memory Read Memory Write Internal I/O Read B 3-4 0-1 3-4 W 3-4 0-1 N/A B/B 5-6 2-3 N/A W/W 5-6 2-3 N/A W/B/B 7-8 4-5 N/A B/W/B 7-8 4-5 N/A B/B/W 7-8 4-5 N/A B/B/B/B 9-10 6-7 N/A Internal I/O Write 1X External I/O Read 1X External I/O Write 2X External I/O Read 2X External I/O Write 0-1 4-5 1-2 9-11 1-3 N/A 4-5 1-2 9-11 1-3 N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A 4X External I/O Read 4X External I/O Write 6X External I/O Read 6X External I/O Write 8X External I/O Read 8X External I/O Write 17-21 1-5 25-31 1-7 33-41 1-9 17-21 1-5 25-31 1-7 33-41 1-9 N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A Note: Units are in Clocks. "N/A" is not applicable for that particular transaction. DC-8297-03 5-19 Z380TM USER'S MANUAL ZILOG ADC ADD WITH CARRY (BYTE) ADC A,src Operation: A src = R, RX, IM, IR, X A + src + C The source operand together with the Carry flag is added to the accumulator and the sum is stored in the accumulator. The contents of the source is unaffected. Two's complement addition is performed. Flags: Addressing Mode R: RX: IM: IR: X: S: Z: H: V: N: C: Set if the result is negative; cleared otherwise Set if the result is zero; cleared otherwise Set if there is a carry from bit 3 of the result; cleared otherwise Set if arithmetic overflow occurs, that is, if both operands cleared otherwise Cleared Set if there is a carry from the most significant bit of the result; cleared otherwise Syntax ADC A,R ADC A,RX ADC A,n ADC A,(HL) ADC A,(XY+d) Instruction Format 10001-r11y11101 1000110w 11001110 --n-- 10001110 11y11101 10001110--d-- Execute Time 2 2 2 2+r 4+r Note I Field Encodings: r: per convention y: 0 for IX, 1 for IY w: 0 for high byte, 1 for low byte 5-20 DC-8297-03 Z380TM USER'S MANUAL ZILOG ADC ADD WITH CARRY (WORD) ADC HL,src Operation: HL(15-0) dst = HL src = BC, DE, HL, SP HL(15-0) + src(15-0) + C The source operand together with the Carry flag is added to the HL register and the sum is stored in the HL register. The contents of the source are unaffected. Two's complement addition is performed. Flags: S: Z: H: V: N: C: Addressing Mode R: Syntax ADC HL,R Field Encodings: DC-8297-03 Set if the result is negative; cleared otherwise Set if the result is zero; cleared otherwise Set if there is a carry from bit 11 of the result; cleared otherwise Set if arithmetic overflow occurs, that is, if both operands are of the same sign and the result is of the opposite sign; cleared otherwise Cleared Set if there is a carry from the most significant bit of the result; cleared otherwise Instruction Format 11101101 01rr1010 Execute Time 2 Note rr: 00 for BC, 01 for DE, 10 for HL, 11 for SP 5-21 Z380TM USER'S MANUAL ZILOG ADCW ADD WITH CARRY (WORD) ADCW [HL,]src Operation: HL(15-0) src = R, RX, IM, X HL(15-0) + src(15-0) + C The source operand together with the Carry flag is added to the HL register and the sum is stored in the HL register. The contents of the source are unaffected. Two's complement addition is performed. Flags: S: Z: H: V: N: C: Addressing Mode R: RX: IM: X: Set if the result is negative; cleared otherwise Set if the result is zero; cleared otherwise Set if there is a carry from bit 11 of the result; cleared otherwise Set if arithmetic overflow occurs, that is, if both operands are of the same sign and the result is of the opposite sign; cleared otherwise Cleared Set if there is a carry from the most significant bit of the result; cleared otherwise Syntax ADCW [HL,]R ADCW [HL,]RX ADCW [HL,]nn ADCW [HL,](XY+d) Instruction Format 11101101 100011rr 11y11101 10001111 11101101 10001110 -n(low)- n(high)11y11101 11001110 ----d-- Execute Time 2 2 2 4+r Note I Field Encodings: rr: 00 for BC, 01 for DE, 11 for HL y: 0 for IX, 1 for IY 5-22 DC-8297-03 Z380TM USER'S MANUAL ZILOG ADD ADD (BYTE) ADD A,src src = R, RX, IM, IR, X Operation: A + src A The source operand is added to the accumulator and the sum is stored in the accumulator. The contents of the source are unaffected. Two's complement addition is performed. Flags: S: Z: H: V: N: C: Addressing Mode R: RX: IM: IR: X: Set if the result is negative; cleared otherwise Set if the result is zero; cleared otherwise Set if there is a carry from bit 3 of the result; cleared otherwise Set if arithmetic overflow occurs, that is, if both operands are of the same sign and the result is of the opposite sign; cleared otherwise Cleared Set if there is a carry from the most significant bit of the result; cleared otherwise Syntax ADD A,R ADD A,RX ADD A,n ADD A,(HL) ADD A,(XY+d) Instruction Format 10000-r11y11101 1000010w 11000110 ----n-- 10000110 11y11101 10000110 ----d-- Execute Time 2 2 2 2+r 4+r Note I Field Encodings: r: per convention y: 0 for IX, 1 for IY w: 0 for high byte, 1 for low byte DC-8297-03 5-23 Z380TM USER'S MANUAL ZILOG ADD ADD (WORD) ADD dst,src Operation: dst = HL; src = BC, DE, HL, SP, DA or dst = IX; src = BC, DE, IX, SP or dst = IY; src = BC, DE, IY, SP If (XM) then begin dst(31-0) dst(31-0) + src(31-0) end else begin dst(15-0) dst(15-0) + src(15-0) end The source operand is added to the destination and the sum is stored in the destination. The contents of the source are unaffected. Two's complement addition is performed. Note that the length of the operand is controlled by the Extended/Native mode selection, which is consistent with the manipulation of an address by the instruction. Flags: Addressing Mode R: RX: DA: S: Z: H: V: N: C: Unaffected Unaffected Set if there is a carry from bit 11 of the result; cleared otherwise Unaffected Cleared Set if there is a carry from the most significant bit of the result; cleared otherwise Syntax ADD HL,R ADD XY,R ADD HL,(nn) Instruction Format 00rr1001 11y11101 00rr1001 11101101 11000110 -n(low)- n(high)- Execute Time 2 2 2+r Note X X I, X Field Encodings: rr: 00 for BC, 01 for DE, 10 for register to itself, 11 for SP y: 0 for IX, 1 for IY 5-24 DC-8297-03 Z380TM USER'S MANUAL ZILOG ADD ADD TO STACK POINTER (WORD) ADD SP,src src = IM Operation: if (XM) then begin SP(31-0) end else begin SP(15-0) end SP(31-0) + src(31-0) SP(15-0) + src(15-0) The source operand is added to the SP register and the sum is stored in the SP register. This has the effect of allocating or allocating space on the stack. Two's complement addition is performed. Flags: Addressing Mode IM: DC-8297-03 S: Z: H: V: N: C: Unaffected Unaffected Set if there is a carry from bit 11 of the result; cleared otherwise Unaffected Cleared Set if there is a carry from the most significant bit of the result; cleared otherwise Syntax ADD SP,nn Instruction Format 11101101 10000010 -n(low)- -n(high) Execute Time 2 Note I, X 5-25 Z380TM USER'S MANUAL ZILOG ADDW ADD (WORD) ADDW [HL,]src Operation: HL(15-0) src = R, RX, IM, X HL(15-0) + src(15-0) The source operand is added to the HL register and the sum is stored in the HL register. The contents of the source are unaffected. Two's complement addition is performed. Flags: S: Z: H: V: N: C: Addressing Mode R: RX: IM: X: Set if the result is negative; cleared otherwise Set if the result is zero; cleared otherwise Set if there is a carry from bit 11 of the result; cleared otherwise Set if arithmetic overflow occurs, that is, if both operands are of the same sign and the result is of the opposite sign; cleared otherwise Cleared Set if there is a carry from the most significant bit of the result; cleared otherwise Syntax ADDW [HL,]R ADDW [HL,]RX ADDW [HL,]nn ADDW [HL,](XY+d) Instruction Format 11101101 100001rr 11y11101 10000111 11101101 10000110 -n(low)- n(high)11y11101 11000110 --d-- Execute Time 2 2 2 4+r Note I Field Encodings: rr: 00 for BC, 01 for DE, 11 for HL y: 0 for IX, 1 for IY 5-26 DC-8297-03 Z380TM USER'S MANUAL ZILOG AND AND (BYTE) AND [A,]src Operation: A src = R, RX, IM, IR, X A AND src A logical AND operation is performed between the corresponding bits of the source operand and the accumulator and the result is stored in the accumulator. A 1 is stored wherever the corresponding bits in the two operands are both 1s; otherwise a 0 is stored. The contents of the source are unaffected. Flags: Addressing Mode R: RX: IM: IR: X: S: Z: H: P: N: C: Set if the most significant bit of the result is set; cleared otherwise Set if all bits of the result are zero; cleared otherwise Set Set if the parity is even; cleared otherwise Cleared Cleared Syntax AND [A,]R AND [A,]RX AND [A,]n AND [A,](HL) AND [A,](XY+d) Instruction Format 10100-r11y11101 1010010w 11100110 ----n-- 10100110 11y11101 10100110----d-- Execute Time 2 2 2 2+r 4+r Note I Field Encodings: r: per convention y: 0 for IX, 1 for IY w: 0 for high byte, 1 for low byte DC-8297-03 5-27 Z380TM USER'S MANUAL ZILOG ANDW AND (WORD) ANDW [HL,]src Operation: HL(15-0) src = R, RX, IM, X HL(15-0) AND src(15-0) A logical AND operation is performed between the corresponding bits of the source operand and the HL register and the result is stored in the HL register. A 1 is stored wherever the corresponding bits in the two operands are both 1s; otherwise a 0 is stored. The contents of the source are unaffected. Flags: Addressing Mode R: RX: IM: X: S: Z: H: P: N: C: Set if the most significant bit of the result is set; cleared otherwise Set if all bits of the result are zero; cleared otherwise Set Set if the parity is even; cleared otherwise Cleared Cleared Syntax ANDW [HL,]R ANDW [HL,]RX ANDW [HL,]nn ANDW [HL,](XY+d) Instruction Format 11101101 101001rr 11y11101 10100111 1110110110100110 n(low)- n(high)11y11101 11100110 ----d-- Execute Time 2 2 2 4+r Note I Field Encodings: rr: 00 for BC, 01 for DE, 11 for HL y: 0 for IX, 1 for IY 5-28 DC-8297-03 Z380TM USER'S MANUAL ZILOG BIT BIT TEST BIT b,dst Operation: Z dst = R, IR, X NOT dst(b) The specified bit b within the destination operand is tested, and the Zero flag is set to 1 if the specified bit is 0, otherwise the Zero flag is cleared to 0. The contents of the destination are unaffected. The bit to be tested is specified by a 3-bit field in the instruction; this field contains the binary encoding for the bit number to be tested. The bit number b must be between 0 and 7. Flags: Addressing Mode R: IR: X: S: Z: H: V: N: C: Unaffected Set if the specified bit is zero; cleared otherwise Set Unaffected Cleared Unaffected Syntax BIT b,R BIT b,(HL) BIT b,(XY+d) Field Encodings: r: y: DC-8297-03 Instruction Format 11001011 01bbb-r11001011 01bbb110 11y11101 11001011 ----d-- 01bbb110 Execute Time Note 2 2+r 4+r I per convention 0 for IX, 1 for IY 5-29 Z380TM USER'S MANUAL ZILOG BTEST BANK TEST BTEST Operation: S Z V C SR(16) SR(24) SR(0) SR(8) The Alternate Register bits in the Select Register (SR) are transferred to the flags. This allows the program to determine the state of the machine. Flags: Addressing Mode 5-30 S: Z: H: V: N: C: Set if the alternate bank IX is in use; cleared otherwise Set if the alternate bank IY is in use; cleared otherwise Unaffected Set if the alternate bank AF is in use; cleared otherwise Unaffected Set if the alternate bank of BC, DE and HL is in use; cleared otherwise Syntax BTEST Instruction Format 11101101 11001111 Execute Time 2 Note DC-8297-03 Z380TM USER'S MANUAL ZILOG CALL CALL CALL [cc,]dst Operation: dst = DA if (cc is TRUE) then begin if (XM) then begin SP (SP) (SP+1) (SP+2) (SP+3) PC(31-0) else begin SP (SP) (SP+1) PC(15-0) end end SP - 4 PC(7-0) PC(15-8) PC(23-16) PC(31-24) dst(31-0) SP - 2 PC(7-0) PC(15-8) dst(15-0) A conditional Call transfers program control to the destination address if the setting of a selected flag satisfies the condition code "cc" specified in the instruction; an Unconditional Call always transfers control to the destination address. The current contents of the Program Counter (PC) are pushed onto the top of the stack; the PC value used is the address of the first instruction byte following the Call instruction. The destination address is then loaded into the PC and points to the first instruction of the called procedure. At the end of a procedure a Return instruction (RET) can be used to return to the original program. Each of the Zero, Carry, Sign, and Overflow Flags can be individually tested and a call performed conditionally on the setting of the flag. The operand is not enclosed in parentheses with the CALL instruction. Flags: Addressing Mode DA: S: Z: H: V: N: C: Syntax CALL CC,addr CALL addr Field Encodings: Note: DC-8297-03 Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Instruction Format 11-cc100 -a(low)- -a(high) 11001101 -a(low)- -a(high) Execute Time note 4+w Note I, X I, X cc: 000 for NZ, 001 for Z, 010 for NC, 011 for C, 100 for PO or NV, 101 for PE or V, 110 for P or NS, 111 for M or S 2 if CC is false, 4+w if CC is true 5-31 Z380TM USER'S MANUAL ZILOG CALR CALL RELATIVE CALR [cc,]dst Operation: dst = RA if (cc is true) then begin dst if (XM) then begin SP (SP) (SP+1) (SP+2) (SP+3) PC(31-0) end else begin SP (SP) (SP+1) PC(15-0) end end SIGN EXTEND dst SP - 4 PC(7-0) PC(15-8) PC(23-16) PC(31-24) PC(31-0) + dst(31-0) SP - 2 PC(7-0) PC(15-8) PC(15-0) + dst(15-0) A conditional Call transfers program control to the destination address if the setting of a selected flag satisfies the condition code "cc" specified in the instruction; an unconditional call always transfers control to the destination address. The current contents of the Program Counter (PC) are pushed onto the top of the stack; the PC value used is the address of the first instruction byte following the Call instruction. The destination address is then loaded into the PC and points to the first instruction of the called procedure. At the end of a procedure a RETurn instruction is used to return to the original program. These instructions employ either an 8-bit, 16-bit, or 24-bit signed, two's complement displacement from the PC to permit calls within the range of -126 to +129 bytes, -32,765 to +32,770 bytes or -8,388,604 to +8,388,611 bytes from the location of this instruction. Each of the Zero, Carry, Sign, and Overflow flags can be individually tested and a call performed conditionally on the setting of the flag. S: Z: H: V: N: C: Flags: Addressing Mode RA: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax CALR CC,addr CALR addr CALR CC,addr CALR addr CALR CC,addr CALR addr Instruction Format 11101101 11-cc100 --disp-- 11101101 11001101 --disp-- 11011101 11-cc100 -d(low)- -d(high) 11011101 11001101 -d(low)- -d(high) 11111101 11-cc100 -d(low)- -d(mid)- -d(high) 11111101 11001101 -d(low)- -d(mid) -d(high) Execute Time note 4+w note 4+w note 4+w Note X X X X X X Field Encodings: cc: 000 for NZ, 001 for Z, 010 for NC, 011 for C, 100 for PO or NV, 101 for PE or V, 110 for P or NS, 111 for M or S Note: 5-32 2 if CC is false, 4+w if CC is true DC-8297-03 Z380TM USER'S MANUAL ZILOG CCF COMPLEMENT CARRY FLAG CCF Operation: C NOT C The Carry flag is inverted. Flags: Addressing Mode DC-8297-03 S: Z: H: V: N: C: Unaffected Unaffected The previous state of the Carry flag Unaffected Cleared Set if the Carry flag was clear before the operation; cleared otherwise Syntax CCF Instruction Format 00111111 Execute Time Note 2 5-33 Z380TM USER'S MANUAL ZILOG CP COMPARE (BYTE) CP [A,]src Operation: src = R, RX, IM, IR, X A - src The source operand is compared with the accumulator and the flags are set accordingly. The contents of the accumulator and the source are unaffected. Two's complement subtraction is performed. Flags: S: Z: H: V: N: C: Addressing Mode R: RX: IM: IR: X: Set if the result is negative; cleared otherwise Set if the result is zero; cleared otherwise Set if there is a borrow from bit 4 of the result; cleared otherwise Set if arithmetic overflow occurs, that is, if the operands are of different signs and the result is of the same sign as the source; cleared otherwise Set Set if there is a borrow from the most significant bit of the result; cleared otherwise Syntax CP [A,]R CP [A,]RX CP [A,]n CP [A,](HL) CP [A,](XY+d) Instruction Format 10111-r11y11101 1011110w 11111110 ----n-- 10111110 11y11101 10111110 ----d-- Execute Time 2 2 2 2+r 4+r Note I Field Encodings: r: per convention y: 0 for IX, 1 for IY w: 0 for high byte, 1 for low byte 5-34 DC-8297-03 Z380TM USER'S MANUAL ZILOG CPW COMPARE (WORD) CPW [HL,]src Operation: src = R, RX, IM, X HL(15-0) - src(15-0) The source operand is compared with the HL register and the flags are set accordingly. The contents of the HL register and the source are unaffected. Two's complement subtraction is performed. Flags: S: Z: H: V: N: C: Addressing Mode R: RX: IM: X: Syntax CPW [HL,]R CPW [HL,]RX CPW [HL,]nn CPW [HL,](XY+d) Field Encodings: DC-8297-03 Set if the result is negative; cleared otherwise Set if the result is zero; cleared otherwise Set if there is a borrow from bit 12 of the result; cleared otherwise Set if arithmetic overflow occurs, that is, if the operands are of different signs and the result is of the same sign as the source; cleared otherwise Set Set if there is a borrow from the most significant bit of the result; cleared otherwise rr: y: Instruction Format 11101101 101111rr 11y11101 10111111 11101101 10111110 -n(low)- n(high)11y11101 11111110 ----d-- Execute Time 2 2 2 4+r Note I 00 for BC, 01 for DE, 11 for HL 0 for IX, 1 for IY 5-35 Z380TM USER'S MANUAL ZILOG CPD COMPARE AND DECREMENT (BYTE) CPD Operation: A - (HL) if (XM) then begin HL(31-0) end else begin HL(15-0) end BC(15-0) HL(31-0) - 1 HL(15-0) - 1 BC(15-0) - 1 This instruction is used for searching strings of byte data. The byte of data at the location addressed by the HL register is compared with the contents of the accumulator and the Sign and Zero flags are set to reflect the result of the comparison. The contents of the accumulator and the memory bytes are unaffected. Two's complement subtraction is performed. Next the HL register is decremented by one, thus moving the pointer to the previous element in the string. The BC register, used as a counter, is then decremented by one. Flags: S: Z: H: V: N: C: Addressing Mode 5-36 Set if the result is negative; cleared otherwise Set if the result is zero, indicating that the contents of the accumulator and the memory byte are equal; cleared otherwise Set if there is a borrow from bit 4 of the result; cleared otherwise Set if the result of decrementing BC is not equal to zero; cleared otherwise Set Unaffected Syntax CPD Instruction Format 11101101 10101001 Execute Time 3+r Note X DC-8297-03 Z380TM USER'S MANUAL ZILOG CPDR COMPARE, DECREMENT AND REPEAT (BYTE) CPDR Operation: Repeat until (BC=0 OR match) begin A - (HL) if (XM) then begin HL(31-0) HL(31-0) - 1 end else begin HL(15-0) HL(15-0) - 1 end BC(15-0) BC(15-0) - 1 end This instruction is used for searching strings of byte data. The bytes of data starting at the location addressed by the HL register are compared with the contents of the accumulator until either an exact match is found or the string length is exhausted becuase the BC register has decremented to zero. The Sign and Zero flags are set to reflect the result of the comparison. The contents of the accumulator and the memory bytes are unaffected.Two's complement subtraction is performed. After each comparison, the HL register is decremented by one, thus moving the pointer to the previous element in the string. The BC register, used as a counter, is then decremented by one. If the result of decrementing the BC register is not zero and no match has been found, the process is repeated. If the contents of the BC register are zero at the start of this instruction, a string length of 65,536 is indicated. This instruction can be interrupted after each execution of the basic operation. The PC value at the start of this instruction is pushed onto the stack so that the instruction can be resumed. Flags: Addressing Mode DC-8297-03 S: Z: H: V: N: C: Set if the last result is negative; cleared otherwise Set if the last result is zero, indicating a match; cleared otherwise Set if there is a borrow from bit 4 of the last result; cleared otherwise Set if the result of decrementing BC is not equal to zero; cleared otherwise Set Unaffected Syntax CPDR Instruction Format 11101101 10111001 Execute Time (3+r)n Note X 5-37 Z380TM USER'S MANUAL ZILOG CPI COMPARE AND INCREMENT (BYTE) CPI Operation: A - (HL) if (XM) then begin HL(31-0) end else begin HL(15-0) end BC(15-0) HL(31-0) + 1 HL(15-0) + 1 BC(15-0) - 1 This instruction is used for searching strings of byte data. The byte of data at the location addressed by the HL register is compared with the contents of the accumulator and the Sign and Zero flags are set to reflect the result of the comparison. The contents of the accumulator and the memory bytes are unaffected. Two's complement subtraction is performed. Next the HL register is incremented by one, thus moving the pointer to the next element in the string. The BC register, used as a counter, is then decremented by one. Flags: Addressing Mode 5-38 S: Set if the result is negative; cleared otherwise Z: Set if the result is zero, indicating that the contents of the accumulator and the memory byte are equal; cleared otherwise H: Set if there is a borrow from bit 4 of the result; cleared otherwise V: Set if the result of decrementing BC is not equal to zero; cleared otherwise N: Set C: Unaffected Syntax CPI Instruction Format 11101101 10100001 Execute Time 3+r Note X DC-8297-03 Z380TM USER'S MANUAL ZILOG CPIR COMPARE, INCREMENT AND REPEAT (BYTE) CPIR Operation: Repeat until (BC=0 OR match) begin A - (HL) if (XM) then begin HL(31-0) HL(31-0) + 1 end else begin HL(15-0) HL(15-0) + 1 end BC(15-0) BC(15-0) - 1 end This instruction is used for searching strings of byte data. The bytes of data starting at the location addressed by the HL register are compared with the contents of the accumulator until either an exact match is found or the string length is exhausted becuase the BC register has decremented to zero. The Sign and Zero flags are set to reflect the result of the comparison. The contents of the accumulator and the memory bytes are unaffected. Two's complement subtraction is performed. After each comparison, the HL register is incremented by one, thus moving the pointer to the next element in the string. The BC register, used as a counter, is then decremented by one. If the result of decrementing the BC register is not zero and no match has been found, the process is repeated. If the contents of the BC register are zero at the start of this instruction, a string length of 65,536 is indicated. This instruction can be interrupted after each execution of the basic operation. The PC value at the start of this instruction is pushed onto the stack so that the instruction can be resumed. Flags: Addressing Mode DC-8297-03 S: Z: H: V: N: C: Set if the last result is negative; cleared otherwise Set if the last result is zero, indicating a match; cleared otherwise Set if there is a borrow from bit 4 of the last result; cleared otherwise Set if the result of decrementing BC is not equal to zero; cleared otherwise Set Unaffected Syntax CPIR Instruction Format 11101101 10110001 Execute Time (3+r)n Note X 5-39 Z380TM USER'S MANUAL ZILOG CPL COMPLEMENT ACCUMULATOR CPL [A] Operation: A NOT A The contents of the accumulator are complemented (one's complement); all 1s are changed to 0 and vice-versa. Flags: Addressing Mode 5-40 S: Z: H: V: N: C: Unaffected Unaffected Set Unaffected Set Unaffected Syntax CPL [A] Instruction Format 00101111 Execute Time 2 Note DC-8297-03 Z380TM USER'S MANUAL ZILOG CPLW COMPLEMENT HL REGISTER (WORD) CPLW [HL] Operation: HL(15-0) NOT HL(15-0) The contents of the HL register are complemented (ones complement); all 1s are changed to 0 and vice-versa. Flags: Addressing Mode DC-8297-03 S: Z: H: V: N: C: Unaffected Unaffected Set Unaffected Set Unaffected Syntax CPLW [HL] Instruction Format 11011101 00101111 Execute Time 2 Note 5-41 Z380TM USER'S MANUAL ZILOG DAA DECIMAL ADJUST ACCUMULATOR DAA Operation: A Decimal Adjust A The accumulator is adjusted to form two 4-bit BCD digits following a binary, two's complement addition or subtraction on two BCD-encoded bytes. The table below indicates the operation performed for addition (ADD, ADC, INC) or subtraction (SUB, SBC, DEC, NEG). Operation ADD ADC INC (N=0) SUB SBC DEC NEG (N=1) Flags: Addressing Mode 5-42 C Before DAA Hex Value Upper Digit (Bits 7-4) H Before DAA Hex Value Lower Digit (Bits 3-0) Number Added to Byte C After DAA H After DAA 0 0 0 0 0 0 1 1 1 0-9 0-8 0-9 A-F 9-F A-F 0-2 0-2 0-3 0 0 1 0 0 1 0 0 1 0-9 A-F 0-3 0-9 A-F 0-3 0-9 A-F 0-3 00 06 06 60 66 66 60 66 66 0 0 0 1 1 1 1 1 1 0 1 0 0 1 0 0 1 0 0 0 1 1 0-9 0-8 7-F 6-F 0 1 0 1 0-9 6-F 0-9 6-F 00 FA A0 9A 0 0 1 1 0 1 0 1 S: Z: H: P: N: C: Set if the most significant bit of the result is set; cleared otherwise Set if the result is zero; cleared otherwise See table above Set if the parity of the result is even; cleared otherwise Not affected See table above Syntax DAA Instruction Format 00100111 Execute Time 3 Note DC-8297-03 Z380TM USER'S MANUAL ZILOG DDIR DECODER DIRECTIVE DDIR mode mode = W or LW, IB or IW Operation: None, decoder directive only This is not an instruction, but rather a directive to the instruction decoder. The instruction decoder may be directed to fetch an additional byte or word of immediate data or address with the instruction, as well as tagging the instruction for execution in either Word or Long Word mode. All eight combinations of the two options are supported, as shown in the encoding below. Instructions which do not support decoder directives are assembled by the instruction decoder as if the decoder directive were not present. The IB decoder directive causes the decoder to fetch an additional byte immediately after the existing immediate data or direct address, and in front of any trailing opcode bytes (with instructions starting with DD-CB or FD-CB, for example). Likewise, the IW decoder directive causes the decoder to fetch an additional word immediately after the existing immediate data or direct address, and in front of any trailing opcode bytes. Byte ordering within the instruction follows the usual convention; least significant byte first, followed by more significant bytes. More-significant immediate data or direct address bytes not specified in the instruction are taken as all zeros by the processor. The W decoder directive causes the instruction decoder to tag the instruction for execution in Word mode. This is useful while the Long Word (LW) bit in the Select Register (SR) is set, but 16-bit data manipulation is required for this instruction. The LW decoder directive causes the instruction decoder to tag the instruction for execution in Long Word mode. This is useful while the LW bit in the SR is cleared, but 32-bit data manipulation is required for this instruction. Flags: Addressing Mode S: Z: H: V: N: C: Syntax DDIR mode Field Encodings: DC-8297-03 Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected wim: 000 W 001 IB,W 010 IW,W 011 IB 100 LW 101 IB,LW 110 IW,LW 111 IW Instruction Format 11w11101 110000im Execute Time 0 Note Word mode Immediate byte, Word mode Immediate word, Word mode Immediate byte Long Word mode Immediate byte, Long Word mode Immediate word, Long Word mode Immediate word 5-43 Z380TM USER'S MANUAL ZILOG DEC DECREMENT (BYTE) DEC dst Operation: dst = R, RX, IR, X dst dst - 1 The destination operand is decremented by one and the result is stored in the destination. Two's complement subtraction is performed. Flags: Addressing Mode R: RX: IR: X: S: Z: H: V: N: C: Set if the result is negative; cleared otherwise Set if the result is zero; cleared otherwise Set if there is a borrow from bit 4 of the result; cleared otherwise Set if arithmetic overflow occurs, that is, if the destination was 80H; cleared otherwise Set Unaffected Syntax DEC R DEC RX DEC (HL) DEC (XY+d) Instruction Format 00-r-101 11y11101 0010w101 00110101 11y11101 00110101 ----d-- Execute Time note 2 2+r+w 4+r+w Note I Field Encodings: r: per convention y: 0 for IX, 1 for IY w: 0 for high byte, 1 for low byte Note: 5-44 2 for accumulator, 3 for any other register DC-8297-03 Z380TM USER'S MANUAL ZILOG DEC[W] DECREMENT (WORD) DEC[W] dst dst = R, RX Operation: if (XM) then begin dst(31-0) end else begin dst(15-0) end dst(31-0) - 1 dst(15-0) - 1 The destination operand is decremented by one and the result is stored in the destination. Two's complement subtraction is performed. Note that the length of the operand is controlled by the Extended/Native mode selection, which is consistent with the manipulation of an address by the instruction. Flags: Addressing Mode R: RX: S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax DEC[W] R DEC[W] RX Instruction Format 00rr1011 11y11101 00101011 Execute Time 2 2 Note X X Field Encodings: rr: 00 for BC, 01 for DE, 10 for HL, 11 for SP y: 0 for IX, 1 for IY DC-8297-03 5-45 Z380TM USER'S MANUAL ZILOG DI DISABLE INTERRUPTS DI [n] Operation: if (n is present) then begin for i=1 to 4 begin if (n(i) = 1) then begin IER(i-1) end end if (n(0) = 1) then begin SR(5) end end else begin SR(5) end 0 0 0 If an argument is present, disable the selected interrupts by clearing the appropriate enable bits in the Interrupt Enable Register, and then clear the Interrupt Enable Flag (IEF1) in the Select Register (SR) if the least-significant bit of the argument is set, disabling maskable interrupts. Bits 7-5 of the argument are ignored. If no argument is present, IEF1 in the SR is set to 0, disabling maskable interrupts. Note that during execution of this instruction the maskable interrupts are not sampled. Flags: Addressing Mode 5-46 S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax DI DI n Instruction Format 11110011 11011101 11110011 --n---- Execute Time 2 2 Note DC-8297-03 Z380TM USER'S MANUAL ZILOG DIVUW DIVIDE UNSIGNED (WORD) DIVUW [HL,]src Operation: src = R, RX, IM, X HL(15-0) HL / src HL(31-16) remainder The contents of the the HL register (dividend) are divided by the source operand (divisor) and the quotient is stored in the lower word of the HL register; the remainder is stored in the upper word of the HL register. The contents of the source are unaffected. Both operands are treated as unsigned, binary integers. There are three possible outcomes of the DIVUW instruction, depending on the division and the resulting quotient: Case 1: If the quotient is less than 65536, then the quotient is left in the HL register, the Overflow and Sign flags are cleared to 0, and the Zero flag is set according to the value of the quotient. Case 2: If the divisor is zero, the HL register is unchanged, the Zero and Overflow flags are set to 1, and the Sign flag is cleared to 0. Case 3: If the quotient is greater than or equal to 65536, the HL register is unchanged, the Overflow flag is set to 1, and the Sign and Zero flags are cleared to 0. Flags: S: Z: H: V: N: C: Addressing Mode R: RX: IM: X: Cleared Set if the quotient or divisor is zero; cleared otherwise Unaffected Set if the divisor is zero or if the computed quotient is greater than or equal to 65536; cleared otherwise Unaffected Unaffected Syntax DIVUW [HL,]R DIVUW [HL,]RX DIVUW [HL,]nn DIVUW [HL,](XY+d) Instruction Format 11101101 11001011 101110rr 11101101 11001011 1011110y 11101101 11001011 10111111 -n(low)- -n(high) 11y11101 11001011 ----d-- 10111010 Execute Time Note 20 20 20 22+r I Field Encodings: rr: 00 for BC, 01 for DE, 11 for HL y: 0 for IX, 1 for IY DC-8297-03 5-47 Z380TM USER'S MANUAL ZILOG DJNZ DECREMENT AND JUMP IF NON-ZERO DJNZ dst Operation: dst = RA B If (B <> 0) then begin dst if (XM) then begin PC(31-0) end else begin PC(15-0) end end B-1 SIGN EXTEND dst PC(31-0) + dst(31-0) PC(15-0) + dst(15-0) The B register is decremented by one. If the result is non-zero, then the destination address is calculated and then loaded into the Program Counter (PC). Control then passes to the instruction whose address is pointed to by the PC. When the B register reaches zero, control falls through to the instruction following DJNZ. This instruction provides a simple method of loop control. The destination address is calculated using Relative addressing. The displacement in the instruction is added to the PC; the PC value used is the address of the instruction following the DJNZ instruction. These instructions employ either an 8-bit, 16-bit, or 24-bit signed, two's complement displacement from the PC to permit jumps within a range of -126 to +129 bytes, -32,765 to +32,770 bytes, or -8,388,604 to +8,388,611 bytes from the location of this instruction. Flags: Addressing Mode RA: Note: 5-48 S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax DJNZ addr DJNZ addr DJNZ addr Instruction Format 00010000 --disp-- 11011101 00010000 -d(low)- -d(high) 11111101 00010000 -d(low)- -d(mid)- -d(high) Execute Time note note note Note X X X 3 if branch not taken, 4 if branch taken DC-8297-03 Z380TM USER'S MANUAL ZILOG EI ENABLE INTERRUPTS EI [n] Operation: if (n is present) then begin for i=1 to 4 begin if (n(i) = 1) then begin IER(i-1) end end if (n(0) = 1) then begin SR(5) end end else begin SR(5) end 1 1 1 If an argument is present, enable the selected interrupts by setting the appropriate enable bits in the Interrupt Enable Register, and then set the Interrupt Enable Flag (IEF1) in the Select Register (SR) if the least-significant bit of the argument is set, enabling maskable interrupts. Bits 7-5 of the argument are ignored. If no argument is present, IEF1 in the SR is set to 1, enabling maskable interrupts. Note that during the execution of this instruction and the following instruction, maskable interrupts are not sampled. Flags: Addressing Mode DC-8297-03 S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax EI EI n Instruction Format 11111011 11011101 11111011 --n---- Execute Time 2 2 Note 5-49 Z380TM USER'S MANUAL ZILOG EX EXCHANGE ACCUMULATOR/FLAG WITH ALTERNATE BANK EX AF,AF' Operation: SR(0) NOT SR(0) Bit 0 of the Select Register (SR), which controls the selection of primary or alternate bank for the accumulator and flag register, is complemented, thus effectively exchanging the accumulator and flag registers between the two banks. Flags: Addressing Mode 5-50 S: Z: H: V: N: C: Value in F' Value in F' Value in F' Value in F' Value in F' Value in F' Syntax EX AF,AF' Instruction Format 00001000 Execute Time 3 Note DC-8297-03 Z380TM USER'S MANUAL ZILOG EX EXCHANGE ADDRESSING REGISTER WITH TOP OF STACK EX (SP),dst Operation: dst = HL, IX, IY if (LW) then begin (SP+3) dst(31-24) (SP+2) dst(23-16) end (SP+1) dst(15-8) (SP) dst(7-0) The contents of the destination register are exchanged with the top of the stack. In Long Word mode this exchange is two words; otherwise it is one word. Flags: Addressing Mode R: S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax EX (SP),HL EX (SP),XY Instruction Format 11100011 11y11101 11100011 Execute Time 3+r+w 3+r+w Note L L Field Encodings: y: 0 for IX, 1 for IY DC-8297-03 5-51 Z380TM USER'S MANUAL ZILOG EX EXCHANGE REGISTER (WORD) EX dst,src Operation: dst = R, RX src = R, RX if (LW) then begin dst(31-0) end else begin dst(15-0) end src(31-0) src(15-0) The contents of the destination are exchanged with the contents of the source. Flags: Addressing Mode R: RX: S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax EX BC,DE EX BC,HL EX DE,HL EX R,RX EX IX,IY Instruction Format 11101101 00000101 11101101 00001101 11101011 11101101 00rry011 11101101 00101011 Execute Time 3 3 3 3 3 Note L L L L L Field Encodings: rr: 00 for BC, 01 for DE, 11 for HL y: 0 for IX, 1 for IY 5-52 DC-8297-03 Z380TM USER'S MANUAL ZILOG EX EXCHANGE REGISTER WITH ALTERNATE REGISTER (BYTE) EX dst,src Operation: src = R dst src The contents of the destination are exchanged with the contents of the source, where the destination is a register in the primary bank and the source is the corresponding register in the alternate bank Flags: Addressing Mode R: S: Z: H: V: N: C: Syntax EX R,R' Field Encoding: DC-8297-03 Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected r: Instruction Format 11001011 00110-r- Execute Time 3 Note per convention 5-53 Z380TM USER'S MANUAL ZILOG EX EXCHANGE REGISTER WITH ALTERNATE REGISTER (WORD) EX dst,src Operation: src = R, RX if (LW) then begin dst(31-0) end else begin dst(15-0) end src(31-0) src(15-0) The contents of the destination are exchanged with the contents of the source, where the destination is a word register in the primary bank and the source is the corresponding word register in the alternate bank. Flags: Addressing Mode R: RX: S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax EX R,R' EX RX,RX' Instruction Format 11101101 11001011 001100rr 11101101 11001011 0011010y Execute Time 3 3 Note L L Field Encodings: rr: 00 for BC, 01 for DE, 11 for HL y: 0 for IX, 1 for IY 5-54 DC-8297-03 Z380TM USER'S MANUAL ZILOG EX EXCHANGE WITH ACCUMULATOR EX A,src Operation: src = R, IR dst src The contents of the accumulator are exchanged with the contents of the source. Flags: Addressing Mode R: IR: S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax EX A,R EX A,(HL) Instruction Format 11101101 00-r-111 11101101 00110111 Execute Time 3 3+r+w Note Field Encodings: r: per convention DC-8297-03 5-55 Z380TM USER'S MANUAL ZILOG EXALL EXCHANGE ALL REGISTERS WITH ALTERNATE BANK EXALL Operation: SR(24) NOT SR(24) SR(16) NOT SR(16) SR(8) NOT SR(8) Bits 8, 16, and 24 of the Select Register (SR), which control the selection of primary or alternate bank for the BC, DE, HL, IX, and IY registers, are complemented, thus effectively exchanging the BC, DE, HL, IX, and IY registers between the two banks. Flags: Addressing Mode 5-56 S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax EXALL Instruction Format 11101101 11011001 Execute Time 3 Note DC-8297-03 Z380TM USER'S MANUAL ZILOG EXTS EXTEND SIGN (BYTE) EXTS [A] Operation: L if (A(7)=0) then begin H 00h if (LW) then begin HL(31-16) end end else begin H FFh if (LW) then begin HL(31-16) end end A 0000h FFFFh The contents of the accumulator, considered as a signed, two's complement integer, are sign-extended to 16 bits and the result is stored in the HL register. The contents of the accumulator are unaffected. This instruction is useful for conversion of short signed operands into longer signed operands. Flags: Addressing Mode DC-8297-03 S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax EXTS [A] Instruction Format 11101101 01100101 Execute Time 3 Note L 5-57 Z380TM USER'S MANUAL ZILOG EXTSW EXTEND SIGN (WORD) EXTSW [HL] Operation: If (HL(15)=0) then begin HL(31-16) 0000h end else begin HL(31-16) FFFFh end The contents of the low word of the HL register, considered as a signed, two's complement integer, are sign-extended to 32 bits in the HL register. This instruction is useful for conversion of 16-bit signed operands into 32-bit signed operands. Flags: Addressing Mode 5-58 S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax EXTSW [HL] Instruction Format 11101101 01110101 Execute Time 3 Note DC-8297-03 Z380TM USER'S MANUAL ZILOG EXX EXCHANGE REGISTERS WITH ALTERNATE BANK EXX Operation: NOT SR(8) SR(8) Bit 8 of the Select Register (SR), which controls the selection of primary or alternate bank for the BC, DE, and HL registers, is complemented, thus effectively exchanging the BC, DE, and HL registers between the two banks. Flags: Addressing Mode DC-8297-03 S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax EXX Instruction Format 11011001 Execute Time 3 Note 5-59 Z380TM USER'S MANUAL ZILOG EXXX EXCHANGE IX REGISTER WITH ALTERNATE BANK EXXX Operation: SR(16) NOT SR(16) Bit 16 of the Select Register (SR), which controls the selection of primary or alternate bank for the IX register, is complemented, thus effectively exchanging the IX register between the two banks. Flags: Addressing Mode 5-60 S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax EXXX Instruction Format 11011101 11011001 Execute Time 3 Note DC-8297-03 Z380TM USER'S MANUAL ZILOG EXXY EXCHANGE IY REGISTER WITH ALTERNATE BANK EXXY Operation: SR(24) NOT SR(24) Bit 24 of the Select Register (SR), which controls the selection of primary or alternate bank for the IY register, is complemented, thus effectively exchanging the IY register between the two banks. Flags: Addressing Mode DC-8297-03 S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax EXXY Instruction Format 11111101 11011001 Execute Time 3 Note 5-61 Z380TM USER'S MANUAL ZILOG HALT HALT HALT Operation: CPU Halts The CPU operation is suspended until either an interrupt request or reset request is received. This instruction is used to synchronize the CPU with external events, preserving its state until an interrupt or reset request is accepted. After an interrupt is serviced, the instruction following HALT is executed. While the CPU is halted, memory refresh cycles still occur, and bus requests are honored. When this instruction is executed the signal /HALT is asserted and remains asserted until an interrupt or reset request is accepted. Flags: Addressing Mode 5-62 S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax HALT Instruction Format 01110110 Execute Time 2 Note DC-8297-03 Z380TM USER'S MANUAL ZILOG IM INTERRUPT MODE SELECT IM p Operation: p = 0, 1, 2, 3 SR(4-3) p The interrupt mode of operation is set to one of four modes. (See Chapter 6 for a description of the various modes for responding to interrupts). The current interrupt mode can be read from the Select Register (SR). Flags: Addressing Mode S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax IM p Instruction Format 11101101 010pp110 Execute Time 4 Note Field Encodings: pp: 00 for Mode 0, 01 for Mode 3, 10 for Mode 1, 11 for Mode 2 DC-8297-03 5-63 Z380TM USER'S MANUAL ZILOG IN INPUT (BYTE) IN dst,(C) Operation: dst = R dst (C) The byte of data from the selected peripheral is loaded into the destination register. During the I/O transaction, the contents of the 32-bit BC register are placed on the address bus. Flags: Addressing Mode R: S: Z: H: P: N: C: Syntax IN R,(C) Field Encodings: r: 5-64 Set if the input data is negative; cleared otherwise Set if the input data is zero; cleared otherwise Cleared Set if the input data has even parity; cleared otherwise Cleared Unaffected Instruction Format 11101101 01-r-000 Execute Time 2+i Note per convention DC-8297-03 Z380TM USER'S MANUAL ZILOG INW INPUT (WORD) INW dst,(C) Operation: dst(15-0) dst = R (C) The word of data from the selected peripheral is loaded into the destination register. During the I/O transaction, the contents of the 32-bit BC register are placed on the address bus. Flags: Addressing Mode R: S: Z: H: P: N: C: Set if the input data is negative; cleared otherwise Set if the input data is zero; cleared otherwise Cleared Set if the input data has even parity; cleared otherwise Cleared Unaffected Syntax INW R,(C) Instruction Format 11011101 01rrr000 Execute Time 2+i Note Field Encodings: rrr: 000 for BC, 010 for DE, 111 for HL DC-8297-03 5-65 Z380TM USER'S MANUAL ZILOG IN INPUT ACCUMULATOR IN A,(n) Operation: A (n) The byte of data from the selected peripheral is loaded into the accumulator. During the I/O transaction, the 8-bit peripheral address from the instruction is placed on the low byte of the address bus, the contents of the accumulator are placed on address lines A15-A8, and the high-order address lines are all zeros. Flags: Addressing Mode 5-66 S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax IN A,(n) Instruction Format 11011011 ----n-- Execute Time 3+i Note DC-8297-03 Z380TM USER'S MANUAL ZILOG IN0 INPUT (FROM PAGE 0) IN0 dst,(n) Operation: dst = R dst (n) The byte of data from the selected on-chip peripheral is loaded into the destination register. No external I/O transaction will be generated as a result of this instruction, although the I/O address will appear on the address bus while this internal read is occurring. The peripheral address is placed on the low byte of the address bus and zeros are placed on all other address lines. When the second opcode byte is 30h no data is stored in a destination; only the flags are updated. Flags: Addressing Mode R: none: S: Z: H: P: N: C: Syntax IN0 R,(n) IN0 (n Field Encodings: r: DC-8297-03 Set if the input data is negative; cleared otherwise Set if the input data is zero; cleared otherwise Cleared Set if the input data has even parity; cleared otherwise Cleared Unaffected Instruction Format 11101101 00 -r- 000 ----n-- 11101101 00110000 ----n-- Execute Time 3+i 3+i Note per convention 5-67 Z380TM USER'S MANUAL ZILOG INA INPUT DIRECT FROM PORT ADDRESS (BYTE) INA A,(nn) Operation: A (nn) The byte of data from the selected peripheral is loaded into the accumulator. During the I/O transaction, the peripheral address from the instruction is placed on the address bus. Any bytes of address not specified in the instruction are driven on the address lines as all zeros. Flags: Addressing Mode 5-68 S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax INA A,(nn) Instruction Format 11101101 11011011 -n(low)- -n(high) Execute Time 3+i Note I DC-8297-03 Z380TM USER'S MANUAL ZILOG INAW INPUT DIRECT FROM PORT ADDRESS (WORD) INAW HL,(nn) Operation: HL(15-0) (nn) The word of data from the selected peripheral is loaded into the HL register. During the I/O transaction, the peripheral address from the instruction is placed on the address bus. Any bytes of address not specified in the instruction are driven on the address lines as all zeros. Flags: Addressing Mode DC-8297-03 S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax INAW HL,(nn) Instruction Format 11111101 11011011 -n(low)- -n(high) Execute Time 3+i Note I 5-69 Z380TM USER'S MANUAL ZILOG INC INCREMENT (BYTE) INC dst dst = R, RX, IR, X Operation: dst dst + 1 The destination operand is incremented by one and the sum is stored in the destination. Two's complement addition is performed. Flags: Addressing Mode R: RX: IR: X: S: Z: H: V: N: C: Set if the result is negative; cleared otherwise Set if the result is zero; cleared otherwise Set if there is a carry from bit 3 of the result; cleared otherwise Set if arithmetic overflow occurs, that is, if the destination was 7FH; cleared otherwise Cleared Unaffected Syntax INC R INC RX INC (HL) INC (XY+d) Instruction Format 00-r-100 11y11101 0010w100 00110100 11y11101 00110100 ----d-- Execute Time note 2 2+r+w 4+r+w Note I Field Encodings: r: per convention y: 0 for IX, 1 for IY w: 0 for high byte, 1 for low byte Note: 5-70 2 for accumulator, 3 for any other register DC-8297-03 Z380TM USER'S MANUAL ZILOG INC[W] INCREMENT (WORD) INC[W] dst Operation: dst = R, RX if (XM) then begin dst(31-0) < end else begin dst(15-0) end dst(31-0) + 1 dst(15-0) + 1 The destination operand is incremented by one and the sum is stored in the destination. Two's complement addition is performed. Note that the length of the operand is controlled by the Extended/Native mode selection, which is consistent with the manipulation of an address by the instruction. Flags: Addressing Mode R: RX: S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax INC[W] R INC[W] RX Instruction Format 00rr0011 11y11101 00100011 Execute Time 2 2 Note X X Field Encodings: rr: 00 for BC, 01 for DE, 10 for HL, 11 for SP y: 0 for IX, 1 for IY DC-8297-03 5-71 Z380TM USER'S MANUAL ZILOG IND INPUT AND DECREMENT (BYTE) IND Operation: (C) B-1 HL - 1 (HL) B HL This instruction is used for block input of strings of data. During the I/O transaction the 32bit BC register is placed on the address bus. Note that the B register contains the loop count for this instruction so that A15-A8 are not useable as part of a fixed port address. First the byte of data from the selected peripheral is loaded into the memory location addressed by the HL register. Then the B register, used as a counter, is decremented by one. The HL register is then decremented by one, thus moving the pointer to the next destination for the input. Flags: Addressing Mode 5-72 S: Z: H: V: N: C: Unaffected Set if the result of decrementing B is zero; cleared otherwise Unaffected Unaffected Set Unaffected Syntax IND Instruction Format 11101101 10101010 Execute Time 2+i+w Note DC-8297-03 Z380TM USER'S MANUAL ZILOG INDW INPUT AND DECREMENT (WORD) INDW Operation: (HL) BC(15-0) HL (DE) BC(15-0) - 1 HL - 2 This instruction is used for block input of strings of data. During the I/O transaction the 32bit DE register is placed on the address bus. First the word of data from the selected peripheral is loaded into the memory location addressed by the HL register. Then the BC register, used as a counter, is decremented by one. The HL register is then decremented by two, thus moving the pointer to the next destination for the input. Flags: Addressing Mode DC-8297-03 S: Z: H: V: N: C: Unaffected Set if the result of decrementing BC is zero; cleared otherwise Unaffected Unaffected Set Unaffected Syntax INDW Instruction Format 11101101 11101010 Execute Time 2+i+w Note 5-73 Z380TM USER'S MANUAL ZILOG INDR INPUT, DECREMENT AND REPEAT (BYTE) INDR Operation: repeat until (B=0) begin (HL) (C) B B-1 HL HL - 1 end This instruction is used for block input of strings of data. The string of input data from the selected peripheral is loaded into memory at consecutive addresses, starting with the location addressed by the HL register and decreasing. During the I/O transaction the 32-bit BC register is placed on the address bus. Note that the B register contains the loop count for this instruction so that A15-A8 are not useable as part of a fixedport address. First the byte of data from the selected peripheral is loaded into the memory location addressed by the HL register. Then the B register, used as a counter, is decremented by one. The HL register is then decremented by one, thus moving the pointer to the next destination for the input. If the result of decrementing the B register is 0, the instruction is terminated, otherwise the sequence is repeated. If the B register contains 0 at the start of the execution of this instruction, 256 bytes are input. This instruction can be interrupted after each execution of the basic operation. The Program Counter value at the start of this instruction is saved before the interrupt request is accepted, so that the instruction can be properly resumed. Flags: Addressing Mode 5-74 S: Z: H: V: N: C: Unaffected Set if the result of decrementing B is zero; cleared otherwise Unaffected Unaffected Set Unaffected Syntax INDR Instruction Format 11101101 10111010 Execute Time n X (2+i+w) Note DC-8297-03 Z380TM USER'S MANUAL ZILOG INDRW INPUT, DECREMENT AND REPEAT (WORD) INDRW Operation: repeat until (BC=0) begin (HL) (DE) BC(15-0) BC(15-0) - 1 HL HL - 2 end This instruction is used for block input of strings of data. The string of input data from the selected peripheral is loaded into memory at consecutive addresses, starting with the location addressed by the HL register and decreasing. During the I/O transaction the 32-bit DE register is placed on the address bus. First the BC register, used as a counter, is decremented by one. First the word of data from the selected peripheral is loaded into the memory location addressed by the HL register. Then the BC register, used as a counter, is decremented by one. The HL register is then decremented by two, thus moving the pointer to the next destination for the input. If the result of decrementing the BC register is 0, the instruction is terminated, otherwise the sequence is repeated. If the BC register contains 0 at the start of the execution of this instruction, 65536 bytes are input. This instruction can be interrupted after each execution of the basic operation. The Program Counter value at the start of this instruction is saved before the interrupt request is accepted, so that the instruction can be properly resumed. Flags: Addressing Mode DC-8297-03 S: Z: H: V: N: C: Unaffected Set if the result of decrementing BC is zero; cleared otherwise Unaffected Unaffected Set Unaffected Syntax INDRW Instruction Format 11101101 11111010 Execute Time n X (2+i+w) Note 5-75 Z380TM USER'S MANUAL ZILOG INI INPUT AND INCREMENT (BYTE) INI Operation: (C) B-1 HL + 1 (HL) B HL This instruction is used for block input of strings of data. During the I/O transaction the 32bit BC register is placed on the address bus. Note that the B register contains the loop count for this instruction so that A15-A8 are not useable as part of a fixed port address. First the byte of data from the selected peripheral is loaded into the memory location addressed by the HL register. Then the B register, used as a counter, is decremented by one. The HL register is then incremented by one, thus moving the pointer to the next destination for the input. Flags: Addressing Mode 5-76 S: Z: H: V: N: C: Unaffected Set if the result of decrementing B is zero; cleared otherwise Unaffected Unaffected Set Unaffected Syntax INI Instruction Format 11101101 10100010 Execute Time 2+i+w Note DC-8297-03 Z380TM USER'S MANUAL ZILOG INIW INPUT AND INCREMENT (WORD) INIW Operation: (HL) BC(15-0) HL (DE) BC(15-0) - 1 HL + 2 This instruction is used for block input of strings of data. During the I/O transaction the 32-bit DE register is placed on the address bus. First the word of data from the selected peripheral is loaded into the memory location addressed by the HL register. Then the BC register, used as a counter, is decremented by one. The HL register is then incremented by two, thus moving the pointer to the next destination for the input. Flags: Addressing Mode DC-8297-03 S: Z: H: V: N: C: Unaffected Set if the result of decrementing BC is zero; cleared otherwise Unaffected Unaffected Set Unaffected Syntax INIW Instruction Format 11101101 11100010 Execute Time 2+i+w Note 5-77 Z380TM USER'S MANUAL ZILOG INIR INPUT, INCREMENT AND REPEAT (BYTE) INIR Operation: repeat until (B=0) begin (HL) (C) B B-1 HL HL + 1 end This instruction is used for block input of strings of data. The string of input data from the selected peripheral is loaded into memory at consecutive addresses, starting with the location addressed by the HL register and increasing. During the I/O transaction the 32-bit BC register is placed on the address bus. Note that the B register contains the loop count for this instruction so that A(15-8) are not useable as part of a fixedport address. First the byte of data from the selected peripheral is loaded into the memory location addressed by the HL register. Then the B register, used as a counter, is decremented by one. The HL register is then incremented by one, thus moving the pointer to the next destination for the input. If the result of decrementing the B register is 0, the instruction is terminated, otherwise the sequence is repeated. If the B register contains 0 at the start of the execution of this instruction, 256 bytes are input. This instruction can be interrupted after each execution of the basic operation. The Program Counter value at the start of this instruction is saved before the interrupt request is accepted, so that the instruction can be properly resumed. Flags: Addressing Mode 5-78 S: Z: H: V: N: C: Unaffected Set if the result of decrementing B is zero; cleared otherwise Unaffected Unaffected Set Unaffected Syntax INIR Instruction Format 11101101 10110010 Execute Time n X (2+i+w) Note DC-8297-03 Z380TM USER'S MANUAL ZILOG INIRW INPUT, INCREMENT AND REPEAT (WORD) INIRW Operation: repeat until (BC=0) begin (HL) (DE) BC(15-0) BC(15-0) - 1 HL HL + 2 end This instruction is used for block input of strings of data. The string of input data from the selected peripheral is loaded into memory at consecutive addresses, starting with the location addressed by the HL register and increasing. During the I/O transaction the 32-bit DE register is placed on the address bus. First the word of data from the selected peripheral is loaded into the memory location addressed by the HL register. Then the BC register, used as a counter, is decremented by one. The HL register is then incremented by two, thus moving the pointer to the next destination for the input. If the result of decrementing the BC register is 0, the instruction is terminated, otherwise the sequence is repeated. If the BC register contains 0 at the start of the execution of this instruction, 65536 bytes are input. This instruction can be interrupted after each execution of the basic operation. The Program Counter value at the start of this instruction is saved before the interrupt request is accepted, so that the instruction can be properly resumed. Flags: Addressing Mode DC-8297-03 S: Z: H: V: N: C: Unaffected Set if the result of decrementing BC is zero; cleared otherwise Unaffected Unaffected Set Unaffected Syntax INIRW Instruction Format 11101101 11110010 Execute Time n X (2+i+w) Note 5-79 Z380TM USER'S MANUAL ZILOG JP JUMP JP [cc,]dst Operation: dst = IR, DA if (cc is TRUE) then begin if (XM) then begin PC(31-0) end else begin PC(15-0) end end dst(31-0) dst(15-0) A conditional jump transfers program control to the destination address if the setting of a selected flag satisfies the condition code "cc" specified in the instruction; an unconditional jump always transfers control to the destination address. If the jump is taken, the Program Counter (PC) is loaded with the destination address; otherwise the instruction following the Jump instruction is executed. Each of the Zero, Carry, Sign, and Overflow flags can be individually tested and a jump performed conditionally on the setting of the flag. When using DA mode with the JP instruction, the operand is not enclosed in parentheses. Flags: Addressing Mode IR: DA: S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax JP (HL) JP (XY) JP CC,addr JP addr Instruction Format 11101001 11y11101 11101001 11-cc010 -a(low)- -a(high) 11000011 -a(low)- -a(high) Execute Time 2 2 2 2 Note X X I, X I, X Field Encodings: y: 0 for IX, 1 for IY cc: 000 for NZ, 001 for Z, 010 for NC, 011 for C, 100 for PO/NV, 101 for PE/V, 110 for P/NS,111 for M/S 5-80 DC-8297-03 Z380TM USER'S MANUAL ZILOG JR JUMP RELATIVE JR [cc,]dst Operation: dst = RA if (cc is TRUE) then begin dst SIGN EXTEND dst if (XM) then begin PC(31-0) PC(31-0) + dst(31-0) end else begin PC(15-0) PC(15-0) + dst(15-0) end end A conditional Jump transfers program control to the destination address if the setting of a selected flag satisfies the condition code "cc" specified in the instruction; an unconditional Jump always transfers control to the destination address. Either the Zero or Carry flag can be tested for the conditional Jump. If the jump is taken, the Program Counter (PC) is loaded with the destination address; otherwise the instruction following the Jump Relative instruction is executed. The destination address is calculated using relative addressing. The displacement in the instruction is added to the PC value for the instruction following the JR instruction, not the value of the PC for the JR instruction. These instructions employ either an 8-bit, 16-bit, or 24-bit signed, two's complement displacement from the PC to permit jumps within a range of -126 to +129 bytes, -32,765 to +32,770 bytes, or -8,388,604 to +8,388,611 bytes from the location of this instruction. Flags: Addressing Mode RA: S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax JR CC,addr JR addr JR CC,addr JR addr JR CC,addr JR addr Instruction Format 001cc000 --disp-- 00011000 --disp-- 11011101 001cc000 -d(low)- -d(high) 11011101 00011000 -d(low)- -d(high) 11111101 001cc000 -d(low)- -d(mid)- -d(high) 11111101 00011000 -d(low)- -d(mid)- -d(high) Execute Time 2 2 2 2 2 2 Note X X X X X X Field Encodings: cc: 00 for NZ, 01 for Z, 10 for NC, 11 for C DC-8297-03 5-81 Z380TM USER'S MANUAL ZILOG LD LOAD ACCUMULATOR LD dst,src Operation: dst = A src = R, RX, IM, IR, DA, X or dst = R, RX, IR, DA, X src = A dst src The contents of the source are loaded into the destination. Flags: S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Load into Accunulator Addressing Mode Syntax R: LD A,R RX: LD A,RX IM: LD A,n IR: LD A,(HL) LD A,(IR) DA: LD A,(nn) X: LD A,(XY+d) Instruction Format 01111-r11y11101 0111110w 00111110 ----n-- 01111110 000a1010 00111010 -n(low)- -n(high) 11y11101 01111110 ----d-- Execute Time 2 2 2 2+r 2+r 3+r 4+r Load from Accunulator Addressing Mode Syntax R: LD Rd,A RX: LD RX,A IR: LD (HL),A LD (IR),A DA: LD (nn),A X: LD (XY+d),A Instruction Format 01-r-111 11y11101 0110w111 01110111 000a0010 00110010 -n(low)- -n(high) 11y11101 01110111 ----d-- Execute Time 2 2 3+w 3+w 4+w 5+w Field Encodings: r: y: w: a: 5-82 Note I I Note I I per convention 0 for IX, 1 for IY 0 for high byte, 1 for low byte 0 for BC, 1 for DE DC-8297-03 Z380TM USER'S MANUAL ZILOG LD LOAD IMMEDIATE (BYTE) LD dst,n Operation: dst = R, RX, IR, X dst n The byte of immediate data is loaded into the destination. Flags: Addressing Mode R: RX: IR: X: S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax LD R,n LD RX,n LD (HL),n LD (XY+d),n Instruction Format 00-r-110 ----n-- 11y11101 0010w110 ----n-- 00110110 ----n-- 11y11101 00110110 ----d-- ----n-- Execute Time 2 2 3+w 5+w Note I Field Encodings: r: per convention y: 0 for IX, 1 for IY w: 0 for high byte, 1 for low byte DC-8297-03 5-83 Z380TM USER'S MANUAL ZILOG LD LOAD IMMEDIATE (WORD) LD dst,nn Operation: dst = R, RX if (LW) then begin dst(31-0) end else begin dst(15-0) end nn nn The word of immediate data is loaded into the destination. Flags: Addressing Mode R: RX: S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax LD R,nn LD RX,nn Instruction Format 00rr0001 -n(low)- -n(high) 11y11101 00100001 -n(low)- -n(high) Execute Time 2 2 Note I, L I, L Field Encodings: rr: 00 for BC, 01 for DE, 10 for HL y: 0 for IX, 1 for IY 5-84 DC-8297-03 Z380TM USER'S MANUAL ZILOG LDW LOAD IMMEDIATE (WORD) LDW dst,nn Operation: dst = IR if (LW) then begin dst(31-0) end else begin dst(15-0) end nn nn The word of immediate data is loaded into the destination. Flags: Addressing Mode IR: S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax LDW (IR),nn Instruction Format 11101101 00pp0110 -n(low)- -n(high) Execute Time 3+w Note I, L Field Encodings: pp: 00 for BC, 01 for DE, 11 for HL DC-8297-03 5-85 Z380TM USER'S MANUAL ZILOG LD LOAD REGISTER (BYTE) LD dst,src dst = R src = R, RX, IM, IR, X or dst = R, RX, IR, X src = R Operation: dst src The contents of the source are loaded into the destination. Flags: S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Load into Register Addressing Mode Syntax R: LD Rd,Rs RX: LD Rd,RX LD RXa,RXb IM: LD R,n IR: LD R,(HL) X: LD R,(XY+d) Instruction Format 01-rd-rs 11y11101 01-ra10w 11y11101 0110a10b 00-r-110 ----n-- 01-r-110 11y11101 01-r-110 ----d-- Execute Time 2 2 2 2 5+w 7+w Load from Register Addressing Mode Syntax RX: LD RX,Rs LD RXa,RXb IR: LD (HL),R X: LD (XY+d),R Instruction Format 11y11101 0110w-ra 11y11101 0110a10b 01110-r11y11101 01110-r- ----d-- Execute Time 2 2 3+w 5+w Field Encodings: r: rd: rs: y: w: ra: a: b: 5-86 Note I Note I per convention per convention per convention 0 for IX, 1 for IY 0 for high byte, 1 for low byte per convention, for A, B, C, D, E only destination, 0 for high byte, 1 for low byte source, 0 for high byte, 1 for low byte DC-8297-03 Z380TM USER'S MANUAL ZILOG LD[W] LOAD REGISTER (WORD) LD[W] dst,src Operation: dst = R src = R, RX, IR, DA, X, SR or dst = R, RX, IR, DA, X, SR src = R if (LW) then begin dst(31-0) end else begin dst(15-0) end src(31-0) src(15-0) The contents of the source are loaded into the destination. Flags: S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Load into Register Addressing Mode Syntax R: LD Rd,Rs RX: LD R,RX IR: LD R,(IR) LD RX,(IR) DA: LD HL,(nn) LD R,(nn) LD RX,(nn) X: LD R,(XY+d) LD IX,(IY+d) LD IY,(IX+d) SR: LD R,(SP+d) LD RX,(SP+d) DC-8297-03 Instruction Format 11rs1101 00rd0010 11y11101 00rr1011 11011101 00rr11ri 11y11101 00ri0011 00101010 -n(low)- -n(high) 11101101 01ra1011 -n(low)- -n(high) 11y11101 00101010 -n(low)- -n(high) 11y11101 11001011 ----d-- 00rr0011 11111101 11001011 ----d-- 00100011 11011101 11001011 ----d-- 00100011 11011101 11001011 ----d-- 00rr0001 11y11101 11001011 ----d-- 00100001 Execute Time 2 2 2+r 2+r 3+r 3+r 3+r 4+r 4+r 4+r 4+r 4+r Note L L L L I, L I, L I, L I, L I, L I, L I, L I, L 5-87 Z380TM USER'S MANUAL ZILOG LD[W] LOAD REGISTER (WORD) Load from Register Addressing Mode Syntax RX: LD RX,R LD IX,IY LD IY,IX IR: LD (IR),RR LD (IR),RX DA: LD (nn),HL LD (nn),R LD (nn),RX X: LD (XY+d),R LD (IY+d),IX LD (IX+d),IY SR: LD (SP+d),R LD (SP+d),XY Field Encodings: rs: rd: y: rr: ri: ra: 5-88 Instruction Format 11y11101 00rr0111 11011101 00100111 11111101 00100111 11111101 00rr11ri 11y11101 00ri0001 00100010 -n(low)- -n(high) 11101101 01ra0011 -n(low)- -n(high) 11y11101 00100010 -n(low)- -n(high) 11y11101 11001011 ----d-- 00rr1011 11111101 11001011 ----d-- 00101011 11011101 11001011 ----d-- 00101011 11011101 11001011 ----d-- 00rr1001 11y11101 11001011 ----d-- 00101001 Execute Time 2 2 2 3+w 3+w 4+w 4+w 4+w 5+w 5+w 5+w 5+w 5+w Note L L L L L I, L I, L I, L I, L I, L I, L I, L I, L 01 for DE, 10 for BC, 11 for HL 00 for BC, 01 for DE, 11 for HL 0 for IX, 1 for IY 00 for BC, 01 for DE, 11 for HL 00 for BC, 01 for DE, 11 for HL 00 for BC, 01 for DE, 10 for HL DC-8297-03 Z380TM USER'S MANUAL ZILOG LD LOAD STACK POINTER LD dst,src Operation: dst = SP src = R, RX, IM, DA or dst = DA src = SP if (LW) then begin dst(31-0) end else begin dst(15-0) end src(31-0) src(15-0) The contents of the source are loaded into the destination. Flags: S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Load into Stack Pointer Addressing Mode Syntax R: LD SP,HL RX: LD SP,RX IM: LD SP,nn DA: LD SP,(nn) Field Encodings: y: Execute Time 2 2 2 3+r Note L L I, L I, L Execute Time 4+w Note I, L 0 for IX, 1 for IY Load from Stack Pointer Addressing Mode Syntax DA: LD (nn),SP DC-8297-03 Instruction Format 11111001 11y11101 11111001 00110001 -n(low)- -n(high) 11101101 01111011 -n(low)- -n(high) Instruction Format 11101101 01110011 -n(low)- -n(high) 5-89 Z380TM USER'S MANUAL ZILOG LD LOAD FROM I OR R REGISTER (BYTE) LD dst,src Operation: dst = A src = I, R dst src The contents of the source are loaded into the accumulator. The contents of the source are not affected. The Sign and Zero flags are set according to the value of the data transferred; the Overflow flag is set according to the state of the interrupt enable. Note that if an interrupt occurs during execution of either of these instructions the Overflow flag reflects the prior state of the interrupt enable. Also note that the R register does not contain the refresh address and is not modified by refresh transactions. Flags: Addressing Mode 5-90 S: Z: H: V: N: C: Set if the data loaded into the accumulator is negative; cleared otherwise Set if the data loaded into the accumulator is zero; cleared otherwise Cleared Set when loading the accumulator if interrupts are enabled; cleared otherwise Cleared Unaffected Syntax LD A,I LD A,R Instruction Format 11101101 01010111 11101101 01011111 Execute Time 2 2 Note DC-8297-03 Z380TM USER'S MANUAL ZILOG LD LOAD INTO I OR R REGISTER (BYTE) LD dst,src Operation: dst = I, R src = A dst src The contents of the accumulator are loaded into the destination. Note that the R register does not contain the refresh address and is not modified by refresh transactions. Flags: Addressing Mode R: DC-8297-03 S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax LD I,A LD R,A Instruction Format 11101101 01000111 11101101 01001111 Execute Time 2 2 Note 5-91 Z380TM USER'S MANUAL ZILOG LD[W] LOAD I REGISTER (WORD) LD[W] dst,src Operation: if (LW) then begin dst(31-0) end else begin dst(15-0) end dst = HL src = I OR dst = I src = HL src(31-0) src(15-0) The contents of the source are loaded into the destination Flags: S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Load from I Register Addressing Mode Syntax R: LD[W] HL,I Instruction Format 11011101 01010111 Execute Time 2 Note L Load into I Register Addressing Mode Syntax R: LD[W] I,HL Instruction Format 11011101 01000111 Execute Time 2 Note L 5-92 DC-8297-03 Z380TM USER'S MANUAL ZILOG LDCTL LOAD CONTROL REGISTER (BYTE) LDCTL dst,src Operation: dst = DSR, XSR, YSR src = A, IM or dst = A src = DSR, XSR, YSR or dst = SR src = A, IM if (dst = SR) then begin SR(31-24) SR(23-16) SR(15-8) end else begin dst end src src src src The contents of the source are loaded into the destination. Flags: S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Load into Control Register Addressing Mode Syntax R: LDCTL SR,A LDCTL Rd,A IM: LDCTL SR,n LDCTL Rd,n Instruction Format 11011101 11001000 11qq1101 11011000 11011101 11001010 ----n-- 11qq1101 11011010 ----n-- Execute Time 4 4 4 4 Note Field Encodings: qq: 01 for XSR, 10 for DSR, 11 for YSR Load from Control Register Addressing Mode Syntax R: LDCTL A,Rs Instruction Format 11qq1101 11010000 Execute Time 2 Note Field Encodings: qq: 01 for XSR, 10 for DSR, 11 for YSR DC-8297-03 5-93 Z380TM USER'S MANUAL ZILOG LDCTL LOAD FROM CONTROL REGISTER (WORD) LDCTL dst,src Operation: if (LW) then begin dst(31-0) end else begin dst(15-0) end dst = HL src = SR src(31-0) src(15-0) The contents of the Select Register (SR) are loaded into the HL register. Flags: S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Load from Control Register Addressing Mode Syntax R: LDCTL HL,SR 5-94 Instruction Format 11101101 11000000 Execute Time 2 Note L DC-8297-03 Z380TM USER'S MANUAL ZILOG LDCTL LOAD INTO CONTROL REGISTER (WORD) LDCTL dst,src Operation: if (LW) then begin dst(31-16) end else begin dst(31-24) dst(23-16) end dst(15-8) dst(0) dst = SR src = HL HL(31-16) HL(15-8) HL(15-8) HL(15-8) HL(0) The contents of the HL register are loaded into the Select Register (SR). If Long Word mode is not in effect the upper byte of the HL register is copied into the three most significant bytes of the select register. This instruction does not modify the mode bits in the SR. There are dedicated instructions to modify the mode bits. Flags: S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Load from Control Register Addressing Mode Syntax R: LDCTL SR,HL DC-8297-03 Instruction Format 11101101 11001000 Execute Time 4 Note L 5-95 Z380TM USER'S MANUAL ZILOG LDD LOAD AND DECREMENT (BYTE) LDD Operation: (DE) DE HL BC(15-0) (HL) DE - 1 HL - 1 BC(15-0) - 1 This instruction is used for block transfers of strings of data. The byte of data at the location addressed by the HL register is loaded into the location addressed by the DE register. Both the DE and HL registers are then decremented by one, thus moving the pointers to the preceeding elements in the string. The BC register, used as a counter, is then decremented by one. Flags: Addressing Mode 5-96 S: Z: H: V: N: C: Unaffected Unaffected Cleared Set if the result of decrementing BC is not equal to zero; cleared otherwise Cleared Unaffected Syntax LDD Instruction Format 11101101 10101000 Execute Time 3+r+w Note DC-8297-03 Z380TM USER'S MANUAL ZILOG LDDW LOAD AND DECREMENT (WORD) LDDW Operation: if (LW) then begin (DE) (DE+1) (DE+2) (DE+3) DE HL BC(15-0) end else begin (DE) (DE+1) DE HL BC(15-0) end (HL) (HL+1) (HL+2) (HL+3) DE - 4 HL - 4 BC(15-0) - 4 (HL) (HL+1) DE - 2 HL - 2 BC(15-0) - 2 This instruction is used for block transfers of words of data. The word of data at the location addressed by the HL register is loaded into the location addressed by the DE register. Both the DE and HL registers are then decremented by two or four, thus moving the pointers to the preceeding words in the array. The BC register, used as a byte counter, is then decremented by two or four. Both DE and HL should be even, to allow word transfers on the bus. BC must be even, transferring an even number of bytes, or the operation is undefined. Flags: Addressing Mode DC-8297-03 S: Z: H: V: N: C: Unaffected Unaffected Cleared Set if the result of decrementing BC is not equal to zero; cleared otherwise Cleared Unaffected Syntax LDDW Instruction Format 11101101 11101000 Execute Time 3+r+w Note L 5-97 Z380TM USER'S MANUAL ZILOG LDDR LOAD, DECREMENT AND REPEAT (BYTE) LDDR Operation: repeat until BC=0 begin (DE) (HL) DE DE - 1 HL HL - 1 BC(15-0) BC(15-0) - 1 end This instruction is used for block transfers of strings of data. The bytes of data at the location addressed by the HL register are loaded into memory starting at the location addressed by the DE register. The number of bytes moved is determined by the contents of the BC register. If the BC register contains zero when this instruction is executed, 65,536 bytes are transferred. The effect of decrementing the pointers during the transfer is important if the source and destination strings overlap with the source string starting at a lower memory address. Placing the pointers at the highest address of the strings and decrementing the pointers ensures that the source string is copied without destroying the overlapping area. This instruction can be interrupted after each execution of the basic operation. The Program Counter value of the start of this instruction is saved before the interrupt request is accepted,so that the instruction can be properly resumed. Flags: Addressing Mode 5-98 S: Z: H: V: N: C: Unaffected Unaffected Cleared Cleared Cleared Unaffected Syntax LDDR Instruction Format 11101101 10111000 Execute Time n X (3+r+w) Note DC-8297-03 Z380TM USER'S MANUAL ZILOG LDDRW LOAD, DECREMENT AND REPEAT (WORD) LDDRW Operation: repeat until (BC=0) begin if (LW) then begin (DE) (DE+1) (DE+2) (DE+3) DE HL BC(15-0) end else begin (DE) (DE+1) DE HL BC(15-0) end end (HL) (HL+1) (HL+2) (HL+3) DE - 4 HL - 4 BC(15-0) - 4 (HL) (HL+1) DE - 2 HL - 2 BC(15-0) - 2 This instruction is used for block transfers of strings of data. The words of data at the location addressed by the HL register are loaded into memory starting at the location addressed by the DE register. The number of words moved is determined by the contents of the BC register. If the BC register contains zero when this instruction is executed, 65,536 words are transferred. The effect of decrementing the pointers during the transfer is important if the source and destination strings overlap with the source string starting at a lower memory address. Placing the pointers at the highest address of the strings and decrementing the pointers ensures that the source string is copied without destroying the overlapping area. This instruction can be interrupted after each execution of the basic operation. The Program Counter value of the start of this instruction is saved before the interrupt request is accepted,so that the instruction can be properly resumed. Flags: Addressing Mode DC-8297-03 S: Z: H: V: N: C: Unaffected Unaffected Cleared Cleared Cleared Unaffected Syntax LDDRW Instruction Format 11101101 11111000 Execute Time nX(3+r+w) Note L 5-99 Z380TM USER'S MANUAL ZILOG LDI LOAD AND INCREMENT (BYTE) LDI Operation: (DE) DE HL BC(15-0) (HL) DE + 1 HL + 1 BC(15-0) - 1 This instruction is used for block transfers of strings of data. The byte of data at the location addressed by the HL register is loaded into the location addressed by the DE register. Both the DE and HL registers are then incremented by one, thus moving the pointers to the next elements in the string. The BC register, used as a counter, is then decremented by one. Flags: Addressing Mode 5-100 S: Z: H: V: N: C: Unaffected Unaffected Cleared Set if the result of decrementing BC is not equal to zero; cleared otherwise Cleared Unaffected Syntax LDI Instruction Format 11101101 10100000 Execute Time 3+r+w Note DC-8297-03 Z380TM USER'S MANUAL ZILOG LDIW LOAD AND INCREMENT (WORD) LDIW Operation: if (LW) then begin (DE) (DE+1) (DE+2) (DE+3) DE HL BC(15-0) end else begin (DE) (DE+1) DE HL BC(15-0) end (HL) (HL+1) (HL+2) (HL+3) DE + 4 HL + 4 BC(15-0) - 4 (HL) (HL+1) DE + 2 HL + 2 BC(15-0) - 2 This instruction is used for block transfers of words of data. The word of data at the location addressed by the HL register is loaded into the location addressed by the DE register. Both the DE and HL registers are then incremented by two or four, thus moving the pointers to the succeeding words in the array. The BC register, used as a byte counter, is then decremented by two or four. Both DE and HL should be even, to allow word transfers on the bus. BC must be even, transferring an even number of bytes, or the operation is undefined. Flags: Addressing Mode DC-8297-03 S: Z: H: V: N: C: Unaffected Unaffected Cleared Set if the result of decrementing BC is not equal to zero; cleared otherwise Cleared Unaffected Syntax LDIW Instruction Format 11101101 11100000 Execute Time 3+r+w Note L 5-101 Z380TM USER'S MANUAL ZILOG LDIR LOAD, INCREMENT AND REPEAT (BYTE) LDIR Operation: repeat until (BC=0) begin (DE) (HL) DE DE + 1 HL HL + 1 BC(15-0) BC(15-0) - 1 end This instruction is used for block transfers of strings of data. The bytes of data at the location addressed by the HL register are loaded into memory starting at the location addressed by the DE register. The number of bytes moved is determined by the contents of the BC register. If the BC register contains zero when this instruction is executed, 65,536 bytes are transferred. The effect of incrementing the pointers during the transfer is important if the source and destination strings overlap with the source string starting at a higher memory address. Placing the pointers at the lowest address of the strings and incrementing the pointers ensures that the source string is copied without destroying the overlapping area. This instruction can be interrupted after each execution of the basic operation. The Program Counter value of the start of this instruction is saved before the interrupt request is accepted,so that the instruction can be properly resumed. Flags: Addressing Mode 5-102 S: Z: H: V: N: C: Unaffected Unaffected Cleared Cleared Cleared Unaffected Syntax LDIR Instruction Format 11101101 10110000 Execute Time 3+r+w Note DC-8297-03 Z380TM USER'S MANUAL ZILOG LDIRW LOAD, INCREMENT AND REPEAT (WORD) LDIRW Operation: repeat until (BC=0) begin if (LW) then begin (DE) (DE+1) (DE+2) (DE+3) DE HL BC(15-0) end else begin (DE) (DE+1) DE HL BC(15-0) end end (HL) (HL+1) (HL+2) (HL+3) DE + 4 HL + 4 BC(15-0) - 4 (HL) (HL+1) DE + 2 HL + 2 BC(15-0) - 2 This instruction is used for block transfers of strings of data. The words of data at the location addressed by the HL register are loaded into memory starting at the location addressed by the DE register. The number of words moved is determined by the contents of the BC register. If the BC register contains zero when this instruction is executed, 65,536 words are transferred. The effect of incrementing the pointers during the transfer is important if the source and destination strings overlap with the source string starting at a higher memory address. Placing the pointers at the lowest address of the strings and incrementing the pointers ensures that the source string is copied without destroying the overlapping area. This instruction can be interrupted after each execution of the basic operation. The Program Counter value of the start of this instruction is save before the interrupt request is accepted,so that the instruction can be properly resumed. Flags: Addressing Mode DC-8297-03 S: Z: H: V: N: C: Unaffected Unaffected Cleared Cleared Cleared Unaffected Syntax LDIRW Instruction Format 11101101 11110000 Execute Time (3+r+w)n Note L 5-103 Z380TM USER'S MANUAL ZILOG MLT MULTIPLY UNSIGNED (BYTE) MLT R Operation: src = R R(15-0) R(7-0) x R(15-8) The contents of the upper byte of the source register are multiplied by the contents of the lower byte of the source register and the product is stored in the source register. Both operands. Both operands are treated as unsigned, binary integers. Flags: Addressing Mode R: S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax MLT R Instruction Format 11101101 01rr1100 Execute Time 7 Note Field Encodings: rr: 00 for BC, 01 for DE, 10 for HL, 11 for SP 5-104 DC-8297-03 Z380TM USER'S MANUAL ZILOG MTEST MODE TEST MTEST Operation: S Z C SR(7) SR(6) SR(1) The three mode control bits in the Select Register (SR) are transferred to the flags. This allows the program to determine the state of the machine. Flags: Addressing Mode DC-8297-03 S: Z: H: V: N: C: Set if Extended mode is in effect; cleared otherwise Set if Long word mode is in effect; cleared otherwise Unaffected Unaffected Unaffected Set if Lock mode is in effect; cleared otherwise Syntax MTEST Instruction Format 11011101 11001111 Execute Time 2 Note 5-105 Z380TM USER'S MANUAL ZILOG MULTW MULTIPLY (WORD) MULTW [HL,]src Operation: HL(31-0) src = R, RX, IM, X HL(15-0) x src(15-0) The contents of the HL register are multiplied by the source operand and the product is stored in the HL register. The contents of the source are unaffected. Both operands are treated as signed, two's complement integers. The initial contents of the HL register are overwritten by the result. The Carry flag is set to indicate that the upper word of the HL register is required to represent the result; if the Carry flag is cleared, the product can be correctly represented in 16 bits and the upper word of the HL register merely holds sign-extension data. Flags: Addressing Mode R: RX: IM: X: S: Z: H: V: N: C: Set if the result is negative; cleared otherwise Set if the result is zero; cleared otherwise Unaffected Cleared Unaffected Set if the product is less than -32768 or greater than or equal to 32768; cleared otherwise Syntax MULTW [HL,]R MULTW [HL,]RX MULTW [HL,]nn MULTW [HL,](XY+d) Instruction Format 11101101 11001011 100100rr 11101101 11001011 1001010y 11101101 11001011 10010111 -n(low)- -n(high) 11y11101 11001011 ----d-- 10010010 Execute Time 10 10 10 12+r Note I Field Encodings: rr: 00 for BC, 01 for DE, 11 for HL y: 0 for IX, 1 for IY 5-106 DC-8297-03 Z380TM USER'S MANUAL ZILOG MULTUW MULTIPLY UNSIGNED (WORD) MULTUW [HL,]src Operation: HL(31-0) src = R, RX, IM, X HL(15-0) x src(15-0) The contents of the HL register are multiplied by the source operand and the product is stored in the HL register. The contents of the source are unaffected. Both operands are treated as unsigned, binary integers. The initial contents of the HL register are overwritten by the result. The Carry flag is set to indicate that the upper word of the HL register is required to represent the result; if the Carry flag is cleared, the product can be correctly represented in 16 bits and the upper word of the HL register merely holds zero. Flags: Addressing Mode R: RX: IM: X: S: Z: H: V: N: C: Cleared Set if the result is zero; cleared otherwise Unaffected Cleared Unaffected Set if the product is greater than or equal to 65536; cleared otherwise Syntax MULTUW [HL,]R MULTUW [HL,]RX MULTUW [HL,]nn MULTUW [HL,](XY+d) Instruction Format 11101101 11001011 100110rr 11101101 11001011 1001110y 11101101 11001011 10011111 -n(low)- -n(high) 11y11101 11001011 ----d-- 10011010 Execute Time 11 11 11 13+r Note I Field Encodings: rr: 00 for BC, 01 for DE, 11 for HL y: 0 for IX, 1 for IY DC-8297-03 5-107 Z380TM USER'S MANUAL ZILOG NEG NEGATE ACCUMULATOR NEG [A] Operation: A -A The contents of the accumulator are negated, that is replaced by its two's complement value. Note that 80h is replaced by itself, because in two's complement representation the negative number with the greatest magnitude has no positive counterpart; for this case, the Overflow flag is set to 1. Flags: Addressing Mode 5-108 S: Z: H: V: N: C: Set if the result is negative; cleared otherwise Set if the result is zero; cleared otherwise Set if there is a borrow from bit 4 of the result; cleared otherwise Set if the content of the accumulator was 80h before the operation; cleared otherwise Set Set if the content of the accumulator was not 00h before the operation; cleared if the content of the accumulator was 00h Syntax NEG [A] Instruction Format 11101101 01000100 Execute Time 2 Note DC-8297-03 Z380TM USER'S MANUAL ZILOG NEGW NEGATE HL REGISTER (WORD) NEGW [HL] Operation: HL(15-0) -HL(15-0) The contents of the HL register are negated, that is replaced by its two's complement value. Note that 8000h is, replaced by itself, because in two's complement representation the negative number with the greatest magnitude has no positive counterpart; for this case, the Overflow flag is set to 1. Flags: Addressing Mode DC-8297-03 S: Z: H: V: N: C: Set if the result is negative; cleared otherwise Set if the result is zero; cleared otherwise Set if there is a borrow from bit 4 of the result; cleared otherwise Set if the content of the HL register was 8000h before the operation; cleared otherwise Set Set if the content of the HL register was not 0000h before the operation; cleared if the content of the HL register was 0000h Syntax NEGW [HL] Instruction Format 11101101 01010100 Execute Time 2 Note 5-109 Z380TM USER'S MANUAL ZILOG NOP NO OPERATION NOP Operation: None No operation. Flags: Addressing Mode 5-110 S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax NOP Instruction Format 00000000 Execute Time 2 Note DC-8297-03 Z380TM USER'S MANUAL ZILOG OR OR (BYTE) OR [A,]src Operation: A src = R, RX, IM, IR, X A OR src A logical OR operation is performed between the corresponding bits of the source operand and the accumulator and the result is stored in the accumulator. A 1 bit is stored wherever either of the corresponding bits in the two operands is 1; otherwise a 0 bit is stored. The contents of the source are unaffected. Flags: Addressing Mode R: RX: IM: IR: X: S: Z: H: P: N: C: Set if the most significant bit of the result is set; cleared otherwise Set if all bits of the result are zero; cleared otherwise Cleared Set if the parity is even; cleared otherwise Cleared Cleared Syntax OR [A,]R OR [A,]RX OR [A,]n OR [A,](HL) OR [A,](XY+d) Instruction Format 10110-r11y11101 1011010w 11110110 ----n-- 10110110 11y11101 10110110 ----d-- Execute Time 2 2 2 2+r 4+r Note I Field Encodings: r: per convention y: 0 for IX, 1 for IY w: 0 for high byte, 1 for low byte DC-8297-03 5-111 Z380TM USER'S MANUAL ZILOG ORW OR (WORD) ORW [HL,]src Operation: HL(15-0) src = R, RX, IM, X HL(15-0) OR src(15-0) A logical OR operation is performed between the corresponding bits of the source operand and the HL register and the result is stored in the HL register. A 1 bit is stored wherever either of the corresponding bits in the two operands is 1; otherwise a 0 bit is stored. The contents of the source are unaffected. Flags: Addressing Mode R: RX: IM: X: S: Z: H: P: N: C: Set if the most significant bit of the result is set; cleared otherwise Set if all bits of the result are zero; cleared otherwise Cleared Set if the parity is even; cleared otherwise Cleared Cleared Syntax ORW [HL,]R ORW [HL,]RX ORW [HL,]nn ORW [HL,](XY+d) Instruction Format 11101101 101101rr 11y11101 10110111 11101101 10110110 -n(low) -n(high)11y11101 11110110 ----d-- Execute Time 2 2 2+r 4+r Note I Field Encodings: rr: 00 for BC, 01 for DE, 11 for HL y: 0 for IX, 1 for IY 5-112 DC-8297-03 Z380TM USER'S MANUAL ZILOG OTDM OUTPUT DECREMENT MEMORY OTDM Operation: (C) C B HL (HL) C-1 B-1 HL - 1 This instruction is used for block output of strings of data to on-chip peripherals. No external I/O transaction will be generated as a result of this instruction, although the I/O address will appear on the address bus and the write data will appear on the data bus while this internal write is occurring. The peripheral address is placed on the low byte of the address bus and zeros are placed on all other address lines. The byte of data from the memory location addressed by the HL register is loaded to the on-chip I/O port addressed by the C register. The C register, holding the port address, is decremented by one to select the next output port. The B register, used as a counter, is then decremented by one. The HL register is then decremented by one, thus moving the pointer to the next source for the output. Flags: S: Z: H: P: N: C: Addressing Mode DC-8297-03 Set if the result of decrementing B is negative; cleared otherwise Set if the result of decrementing B is zero; cleared otherwise Set if there is a borrow from bit 4 during the decrement of the B register; cleared otherwise Set if the result of the decrement of the B register is even; cleared otherwise Set if the most significant bit of the byte transferred was a 1; cleared otherwsie Set if there is a borrow from the most significant bit during the decrement of the B register; cleared otherwise Syntax OTDM Instruction Format 11101101 10001011 Execute Time 2+r+o Note 5-113 Z380TM USER'S MANUAL ZILOG OTDMR OUTPUT, DECREMENT MEMORY REPEAT OTDMR Operation: repeat until (B=0) begin (C) (HL) C C-1 B B-1 HL HL - 1 end This instruction is used for block output of strings of data to on-chip peripherals. No external I/O transaction will be generated as a result of this instruction, although the I/O address will appear on the address bus and the write data will appear on the data bus while this internal write is occurring. The peripheral address is placed on the low byte of the address bus and zeros are placed on all other address lines. The byte of data from the memory location addressed by the HL register is loaded to the on-chip I/O port addressed by the C register. The C register, holding the port address, is decremented by one to select the next output port. The B register, used as a counter, is then decremented by one. The HL register is then decremented by one, thus moving the pointer to the next source for the output. If the result of decrementing the B register is 0, the instruction is terminated, otherwise the output sequence is repeated. Note that if the B register contains 0 at the start of the execution of this instruction, 256 bytes are output. This instruction can be interrupted after each execution of the basic operation. The Program Counter value at the start of this instruction is saved before the interrupt request is accepted, so that the instruction can be properly resumed. Flags: Addressing Mode 5-114 S: Z: H: P: N: C: Cleared Set Cleared Set Set if the most significant bit of the byte transferred was a 1; cleared otherwise Cleared Syntax OTDMR Instruction Format 11101101 10011011 Execute Time 2+r+o Note DC-8297-03 Z380TM USER'S MANUAL ZILOG OTDR OUTPUT, DECREMENT AND REPEAT (BYTE) OTDR Operation: repeat until (B=0) begin B B-1 (C) (HL) HL HL - 1 end This instruction is used for block output of strings of data. The string of output data is loaded into the selected peripheral from memory at consecutive addresses, starting with the location addressed by the HL register and decreasing. During the I/O transaction the 32bit BC register is placed on the address bus. Note that the B register contains the loop count for this instruction so that A(15-8) are not useable as part of a fixed port address. The decremented B register is used in the address. First the B register, used as a counter, is decremented by one. The byte of data from the memory location addressed by the HL register is loaded into the selected peripheral. The HL register is then decremented by one, thus moving the pointer to the next source for the output. If the result of decrementing the B register is 0, the instruction is terminated, otherwise the sequence is repeated. If the B register contains 0 at the start of the execution of this instruction, 256 bytes are output. This instruction can be interrupted after each execution of the basic operation. The Program Counter value at the start of this instruction is saved before the interrupt request is accepted, so that the instruction can be properly resumed. Flags: Addressing Mode DC-8297-03 S: Z: H: V: N: C: Unaffected Set if the result of decrementing B is zero; cleared otherwise Unaffected Unaffected Set Unaffected Syntax OTDR Instruction Format 11101101 10111011 Execute Time 2+r+o Note 5-115 Z380TM USER'S MANUAL ZILOG OTDRW OUTPUT, DECREMENT AND REPEAT (WORD) OTDRW Operation: repeat until (BC=0) begin BC(15-0) BC(15-0) - 1 (DE) (HL) HL HL - 2 end This instruction is used for block output of strings of data. The string of output data is loaded into the selected peripheral from memory at consecutive addresses, starting with the location addressed by the HL register and decreasing. During the I/O transaction the 32bit DE register is placed on the address bus. First the BC register, used as a counter, is decremented by one. The word of data from the memory location addressed by the HL register is loaded into the selected peripheral. The HL register is then decremented by two, thus moving the pointer to the next source for the output. If the result of decrementing the BC register is 0, the instruction is terminated, otherwise the sequence is repeated. If the BC register contains 0 at the start of the execution of this instruction, 65536 bytes are output. This instruction can be interrupted after each execution of the basic operation. The Program Counter value at the start of this instruction is saved before the interrupt request is accepted, so that the instruction can be properly resumed. Flags: Addressing Mode 5-116 S: Z: H: V: N: C: Unaffected Set if the result of decrementing B is zero; cleared otherwise Unaffected Unaffected Set Unaffected Syntax OTDRW Instruction Format 11101101 11111011 Execute Time 2+r+o Note DC-8297-03 Z380TM USER'S MANUAL ZILOG OTIM OUTPUT INCREMENT MEMORY OTIM Operation: (C) C B HL (HL) C+1 B-1 HL + 1 This instruction is used for block output of strings of data to on-chip peripherals. No external I/O transaction will be generated as a result of this instruction, although the I/O address will appear on the address bus and the write data will appear on the data bus while this internal write is occurring. The peripheral address is placed on the low byte of the address bus and zeros are placed on all other address lines. The byte of data from the memory location addressed by the HL register is loaded to the on-chip I/O port addressed by the C register. The C register, holding the port address, is incremented by one to select the next output port. The B register, used as a counter, is then decremented by one. The HL register is then incremented by one, thus moving the pointer to the next source for the output. Flags: S: Z: H: P: N: C: Addressing Mode DC-8297-03 Set if the result of decrementing B is negative; cleared otherwise Set if the result of decrementing B is zero; cleared otherwise Set if there is a borrow from bit 4 during the decrement of the B register; cleared otherwise Set if the result of the decrement of the B register is even; cleared otherwise Set if the most significant bit of the byte transferred was a 1; cleared otherwise Set if there is a borrow from the most significant bit during the decrement of the B register; cleared otherwise Syntax OTIM Instruction Format 11101101 10000011 Execute Time 2+r+o Note 5-117 Z380TM USER'S MANUAL ZILOG OTIMR OUTPUT, INCREMENT MEMORY REPEAT OTIMR Operation: repeat until (B=0) begin (C) (HL) C C+1 B B-1 HL HL + 1 end This instruction is used for block output of strings of data to on-chip peripherals. No external I/O transaction will be generated as a result of this instruction, although the I/O address will appear on the address bus and the write data will appear on the data bus while this internal write is occurring. The peripheral address is placed on the low byte of the address bus and zeros are placed on all other address lines. The byte of data from the memory location addressed by the HL register is loaded to the on-chip I/O port addressed by the C register. The C register, holding the port address, is incremented by one to select the next output port. The B register, used as a counter, is then decremented by one. The HL register is then incremented by one, thus moving the pointer to the next source for the output. If the result of decrementing the B register is 0, the instruction is terminated, otherwise the output sequence is repeated. Note that if the B register contains 0 at the start of the execution of this instruction, 256 bytes are output. This instruction can be interrupted after each execution of the basic operation. The Program Counter value at the start of this instruction is saved before the interrupt request is accepted, so that the instruction can be properly resumed. Flags: Addressing Mode 5-118 S: Z: H: P: N: C: Cleared Set Cleared Set Set if the most significant bit of the byte transferred was a 1; cleared otherwsie Cleared Syntax OTIMR Instruction Format 11101101 10010011 Execute Time 2+r+o Note DC-8297-03 Z380TM USER'S MANUAL ZILOG OTIR OUTPUT, INCREMENT AND REPEAT (BYTE) OTIR Operation: repeat until (B=0) begin B B-1 (C) (HL) HL HL + 1 end This instruction is used for block output of strings of data. The string of output data is loaded into the selected peripheral from memory at consecutive addresses, starting with the location addressed by the HL register and increasing. During the I/O transaction the 32-bit BC register is placed on the address bus. Note that the B register contains the loop count for this instruction so that A(15-8) are not useable as part of a fixed port address. The decremented B register is used in the address. First the B register, used as a counter, is decremented by one. The byte of data from the memory location addressed by the HL register is loaded into the selected peripheral. The HL register is then incremented by one, thus moving the pointer to the next source for the output. If the result of decrementing the B register is 0, the instruction is terminated, otherwise the sequence is repeated. If the B register contains 0 at the start of the execution of this instruction, 256 bytes are output. This instruction can be interrupted after each execution of the basic operation. The Program Counter value at the start of this instruction is saved before the interrupt request is accepted, so that the instruction can be properly resumed. Flags: Addressing Mode DC-8297-03 S: Z: H: V: N: C: Unaffected Set if the result of decrementing B is zero; cleared otherwise Unaffected Unaffected Set Unaffected Syntax OTIR Instruction Format 11101101 10110011 Execute Time 2+r+o Note 5-119 Z380TM USER'S MANUAL ZILOG OTIRW OUTPUT, INCREMENT AND REPEAT (WORD) OTIRW Operation: repeat until (BC=0) begin BC(15-0) BC(15-0) - 1 (DE) (HL) HL HL + 2 end This instruction is used for block output of strings of data. The string of output data is loaded into the selected peripheral from memory at consecutive addresses, starting with the location addressed by the HL register and increasing. During the I/O transaction the 32-bit DE register is placed on the address bus. First the BC register, used as a counter, is decremented by one. The word of data from the memory location addressed by the HL register is loaded into the selected peripheral. The HL register is then incremented by two, thus moving the pointer to the next source for the output. If the result of decrementing the BC register is 0, the instruction is terminated, otherwise the sequence is repeated. If the BC register contains 0 at the start of the execution of this instruction, 65536 bytes are output. This instruction can be interrupted after each execution of the basic operation. The Program Counter value at the start of this instruction is saved before the interrupt request is accepted, so that the instruction can be properly resumed. Flags: Addressing Mode 5-120 S: Z: H: V: N: C: Unaffected Set if the result of decrementing B is zero; cleared otherwise Unaffected Unaffected Set Unaffected Syntax OTIRW Instruction Format 11101101 11110011 Execute Time 2+r+o Note DC-8297-03 Z380TM USER'S MANUAL ZILOG OUT OUTPUT (BYTE) OUT (C),src Operation: src = R, IM (C) src The byte of data from the source is loaded into the selected peripheral. During the I/O transaction, the contents of the 32-bit BC register are placed on the address bus. Flags: Addressing Mode R: IM: S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax OUT (C),R OUT (C),n Instruction Format 11101101 01 -r- 001 11101101 01110001 --n-- Execute Time 3+o 3+o Note Field Encodings: r: per convention DC-8297-03 5-121 Z380TM USER'S MANUAL ZILOG OUTW OUTPUT (WORD) OUTW (C),src src = R, IM Operation: (C) src(15-0) The word of data from the source is loaded into the selected peripheral. During the I/O transaction, the contents of the 32-bit BC register are placed on the address bus. Flags: Addressing Mode R: IM: S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax OUTW (C),R OUTW (C),nn Instruction Format 11011101 01rrr 001 11111101 01111001 -n(low)- -n(high) Execute Time 2+o 2+o Note Field Encodings: rrr: 000 for BC, 010 for DE, 111 for HL 5-122 DC-8297-03 Z380TM USER'S MANUAL ZILOG OUT OUTPUT ACCUMULATOR OUT (n),A Operation: (n) A The byte of data from the accumulator is loaded into the selected peripheral. During the I/O transaction, the 8-bit peripheral address from the instruction is placed on the low byte of the address bus, the contents of the accumulator are placed on address lines A(15-8), and the high-order address lines are all zeros. Flags: Addressing Mode DC-8297-03 S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax OUT (n),A Instruction Format 11010011 ----n-- Execute Time 3+o Note 5-123 Z380TM USER'S MANUAL ZILOG OUT0 OUTPUT (TO PAGE 0) OUT0 (n),src Operation: src = R (n) src The byte of data from the source register is loaded into the selected on-chip peripheral. No external I/O transaction will be generated as a result of this instruction, although the I/O address will appear on the address bus and the write data will appear on the data bus while this internal write is occurring. The peripheral address is placed on the low byte of the address bus and zeros are placed on all other address lines. Flags: Addressing Mode R: S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax OUT0 (n),R Instruction Format 11101101 00-r-001 ----n-- Execute Time Note 3+o Field Encodings: r: per convention 5-124 DC-8297-03 Z380TM USER'S MANUAL ZILOG OUTA OUTPUT DIRECT TO PORT ADDRESS (BYTE) OUT (nn),A Operation: (nn) A The byte of data from the accumulator is loaded into the selected peripheral. During the I/O transaction, the peripheral address from the instruction is placed on the address bus. Any bytes of address not specified in the instruction are driven on the address lines are all zeros. Flags: Addressing Mode DC-8297-03 S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax OUTA (nn),A Instruction Format 11101101 11010011 -n(low)- -n(high) Execute Time 2+o Note I 5-125 Z380TM USER'S MANUAL ZILOG OUTAW OUTPUT DIRECT TO PORT ADDRESS (WORD) OUT (nn),HL Operation: (nn) HL(15-0) The word of data from the HL register is loaded into the selected peripheral. During the I/O transaction, the peripheral address from the instruction is placed on the address bus. Any bytes of address not specified in the instruction are driven on the address lines are all zeros. Flags: Addressing Mode 5-126 S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax OUTAW (nn),HL Instruction Format 11111101 11010011 -n(low)- -n(high) Execute Time 2+o Note I DC-8297-03 Z380TM USER'S MANUAL ZILOG OUTD OUTPUT AND DECREMENT (BYTE) OUTD Operation: B B-1 (C) (HL) HL HL - 1 This instruction is used for block output of strings of data. During the I/O transaction the 32-bit BC register is placed on the address bus. Note that the B register contains the loop count for this instruction so that A15-A8 are not useable as part of a fixed port address. The decremented B register is used in the address. First the B register, used as a counter, is decremented by one. The byte of data from the memory location addressed by the HL register is loaded into the selected peripheral. The HL register is then decremented by one, thus moving the pointer to the next source for the output. Flags: Addressing Mode DC-8297-03 S: Z: H: V: N: C: Unaffected Set if the result of decrementing B is zero; cleared otherwise Unaffected Unaffected Set Unaffected Syntax OUTD Instruction Format 11101101 10101011 Execute Time 2+r+o Note 5-127 Z380TM USER'S MANUAL ZILOG OUTDW OUTPUT AND DECREMENT (WORD) OUTDW Operation: BC(15-0) (DE) HL BC(15-0) - 1 (HL) HL - 2 This instruction is used for block output of strings of data. During the I/O transaction the 32bit DE register is placed on the address bus. First the BC register, used as a counter, is decremented by one. The word of data from the memory location addressed by the HL register is loaded into the selected peripheral. The HL register is then decremented by two, thus moving the pointer to the next source for the output. Flags: Addressing Mode 5-128 S: Z: H: V: N: C: Unaffected Set if the result of decrementing BC is zero; cleared otherwise Unaffected Unaffected Set Unaffected Syntax OUTDW Instruction Format 11101101 11101011 Execute Time 2+r+o Note DC-8297-03 Z380TM USER'S MANUAL ZILOG OUTI OUTPUT AND INCREMENT (BYTE) OUTI Operation: B B-1 (C) (HL) HL HL + 1 This instruction is used for block output of strings of data. During the I/O transaction the 32bit BC register is placed on the address bus. Note that the B register contains the loop count for this instruction so that A15-A8 are not useable as part of a fixed port address. The decremented B register is used in the address. First the B register, used as a counter, is decremented by one. The byte of data from the memory location addressed by the HL register is loaded into the selected peripheral. The HL register is then incremented by one, thus moving the pointer to the next source for the output. Flags: Addressing Mode DC-8297-03 S: Z: H: V: N: C: Unaffected Set if the result of decrementing B is zero; cleared otherwise Unaffected Unaffected Set Unaffected Syntax OUTI Instruction Format 11101101 10100011 Execute Time 2+r+o Note 5-129 Z380TM USER'S MANUAL ZILOG OUTIW OUTPUT AND INCREMENT (WORD) OUTIW Operation: BC(15-0) (DE) HL BC(15-0) -1 (HL) HL + 2 This instruction is used for block output of strings of data. During the I/O transaction the 32bit DE register is placed on the address bus. First the BC register, used as a counter, is decremented by one. The word of data from the memory location addressed by the HL register is loaded into the selected peripheral. The HL register is then incremented by two, thus moving the pointer to the next source for the output. Flags: Addressing Mode 5-130 S: Z: H: V: N: C: Unaffected Set if the result of decrementing BC is zero; cleared otherwise Unaffected Unaffected Set Unaffected Syntax OUTIW Instruction Format 11101101 11100011 Execute Time 2+r+o Note DC-8297-03 Z380TM USER'S MANUAL ZILOG POP POP ACCUMULATOR POP dst Operation: dst = AF F (SP) A (SP+1) SP SP + 2 if (LW) then begin SP SP + 2 end The contents of the memory location addressed by the Stack Pointer (SP) are loaded into the destination in ascending byte order from ascending address memory locations. For this instruction, the Flag register is the least significant byte, followed by the Accumulator. The SP is then incremented by two (by four in the Long Word mode). Note that in the Long Word mode only one word is read from memory, although the SP is in fact incremented by four. Flags: Addressing Mode DC-8297-03 S: Z: H: V: N: C: Loaded from (SP) Loaded from (SP) Loaded from (SP) Loaded from (SP) Loaded from (SP) Loaded from (SP) Syntax POP AF Instruction Format 11110001 Execute Time 2+r Note L 5-131 Z380TM USER'S MANUAL ZILOG POP POP CONTROL REGISTER POP dst Operation: dst = SR if (LW) then begin dst(6-0) dst(15-8) dst(23-16) dst(31-24) SP end else begin dst(6-0) dst(15-8) dst(23-16) dst(31-24) SP end (SP) (SP+1) (SP+2) (SP+3) SP + 4 (SP) (SP+1) (SP+1) (SP+1) SP + 2 The contents of the memory location addressed by the Stack Pointer (SP) are loaded into the destination in ascending byte order from ascending address memory locations. The SP is then incremented by two (by four in the Long Word mode). Note that when not in the Long Word mode the most significant byte read from memory is also written to the two most significant bytes of the SR. Also note that the XM bit is unaffected by this instruction. Flags: Addressing Mode 5-132 S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax POP SR Instruction Format 11101101 11000001 Execute Time 3+r Note L DC-8297-03 Z380TM USER'S MANUAL ZILOG POP POP REGISTER POP dst Operation: dst = R, RX if (LW) then begin dst(7-0 ) dst(15-8) dst(23-16) dst(31-24) SP end else begin dst(7-0) dst(15-8) SP end (SP) (SP+1) (SP+2) (SP+3) SP + 4 (SP) (SP+1) SP + 2 The contents of the memory location addressed by the Stack Pointer (SP) are loaded into the destination in ascending byte order from ascending address memory locations. The SP is then incremented by two (by four in the Long Word mode). Flags: Addressing Mode R: RX: S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax POP R POP RX Instruction Format 11rr 0001 11y11101 11100001 Execute Time 1+r 1+r Note L L Field Encodings: rr: 00 for BC, 01 for DE, 10 for HL y: 0 for IX, 1 for IY DC-8297-03 5-133 Z380TM USER'S MANUAL ZILOG PUSH PUSH ACCUMULATOR PUSH src Operation: src = AF if (LW) then begin SP SP - 4 (SP) F (SP+1) A (SP+2) 00h (SP+3) 00h end else begin SP SP - 2 (SP) F (SP+1) A end The Stack Pointer (SP) is decremented by two (by four in Long Word mode) and the source is loaded into the memory locations addressed by the SP in ascending byte order in ascending address memory locations. For this instruction, the Flag register is the least significant byte, followed by the Accumulator. The other two bytes written in the Long Word mode are all zeros. The Flag register and Accumulator are unaffected. Flags: Addressing Mode 5-134 S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax PUSH AF Instruction Format 11110101 Execute Time 3+w Note L DC-8297-03 Z380TM USER'S MANUAL ZILOG PUSH PUSH CONTROL REGISTER PUSH src Operation: src = SR if (LW) then begin SP SP - 4 (SP) src(7-0) (SP+1) src(15-8) (SP+2) src(23-16) (SP+3) src(31-24) end else begin SP SP - 2 (SP) src(7-0) (SP+1) src(15-8) end The Stack Pointer (SP) is decremented by two (by four in Long Word mode) and the source is loaded into the memory locations addressed by the SP in ascending byte order in ascending address memory locations. The contents of the source are unaffected. Flags: Addressing Mode DC-8297-03 S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax PUSH SR Instruction Format 11101101 11000101 Execute Time 3+w Note L 5-135 Z380TM USER'S MANUAL ZILOG PUSH PUSH IMMEDIATE PUSH src Operation: src = IM if (LW) then begin SP SP - 4 (SP) src(7-0) (SP+1) src(15-8) (SP+2) src(23-16) (SP+3) src(31-24) end else begin SP SP - 2 (SP) src(7-0) (SP+1) src(15-8) end The Stack Pointer (SP) is decremented by two (by four in Long Word mode) and the source is loaded into the memory locations addressed by the SP in ascending byte order in ascending address memory locations. Flags: Addressing Mode IM: 5-136 S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax PUSH nn Instruction Format 11111101 11110101 -n(low)- -n(high) Execute Time 3+w Note I, L DC-8297-03 Z380TM USER'S MANUAL ZILOG PUSH PUSH REGISTER PUSH src Operation: src = R, RX if (LW) then begin SP SP - 4 (SP) src(7-0) (SP+1) src(15-8) (SP+2) src(23-16) (SP+3) src(31-24) end else begin SP SP - 2 (SP) src(7-0) (SP+1) src(15-8) end The Stack Pointer (SP) is decremented by two (by four in Long Word mode) and the source is loaded into the memory locations addressed by the SP in ascending byte order in ascending address memory locations. The contents of the source are unaffected. Flags: Addressing Mode R: RX: S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax PUSH R PUSH RX Instruction Format 11rr0101 11y11101 11100101 Execute Time 3+w 3+w Note L L Field Encodings: rr: 00 for BC, 01 for DE, 10 for HL y: 0 for IX, 1 for IY DC-8297-03 5-137 Z380TM USER'S MANUAL ZILOG RES RESET BIT RES b, dst Operation: dst = R, IR, X dst(b) 0 The specified bit b within the destination operand is cleared to 0. The other bits in the destination are unaffected. The bit to be reset is specified by a 3-bit field in the instruction; this field contains the binary encoding for the bit number to be cleared. The bit number b must be between 0 and 7. Flags: Addressing Mode R: IR: X: S: Z: H: V: N: C: Syntax RES b,R RES b,(HL) RES b,(XY+d) Field Encodings: r: y: 5-138 Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Instruction Format 11001011 10bbb -r11001011 10bbb110 11y11101 11001011 ----d-- 10bbb110 Execute Time 2 2+r 4+r Note I per convention 0 for IX, 1 for IY DC-8297-03 Z380TM USER'S MANUAL ZILOG RESC RESET CONTROL BIT RESC mode Operation: mode = LCK, LW if (mode = LCK) then begin SR(1) 0 end else begin SR(6) 0 end When reseting Lock mode (LCK), the LCK bit (bit 1) in the Select Register (SR) is set to 0, enabling external bus requests. Note that these requests cannot be granted until after the instruction has been executed, and that one or more of the succeeding instructions may also have been fetched for decoding before this instruction has been executed. When reseting Long Word mode (LW), the LW bit (bit 6) in the SR is set to 0, selecting 16bit words. When using 16-bit words, all word load operations transfer 16 bits. Flags: Addressing Mode S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax RESC mode Instruction Format 11mm1101 11111111 Execute Time 4 Note Field Encodings: mm: 01 for LW, 10 for LCK DC-8297-03 5-139 Z380TM USER'S MANUAL ZILOG RET RETURN RET [cc] Operation: if (cc is TRUE) then begin if (XM) then begin PC(7-0) PC(15-8) PC(23-16) PC(31-24) SP end else begin PC(7-0) PC(15-8) SP end end (SP) (SP+1) (SP+2) (SP+3) SP + 4 (SP) (SP+1) SP + 2 This instruction is used to return to a previously executing procedure at the end of a procedure entered by a Call instruction. For a conditional return, one of the Zero, Carry, Sign, or Parity/Overflow flags is checked to see if its setting matches the condition code "cc" encoded in the instruction; if the condition is not satisfied, the instruction following the Return instruction is executed, otherwise a value is popped from the stack and loaded into the Program Counter (PC), thereby specifying the location of the next instruction to be executed. For an unconditional return, the return is always taken and a condition code is not specified. This instruction is also used to return to a previously executing procedure at the end of a procedure entered by an interrupt in the assigned vectors mode, if Z80 family peripherals are used external to the Z380 MPU. Flags: Addressing Mode S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax RET CC RET Instruction Format 11-cc000 11001001 Execute Time note 2+r Note X X Field Encodings: cc: 000 for NZ, 001 for Z, 010 for NC, 011 for C, 100 for PO/NV, 101 for PE/V, 110 for P/NS, 111 for M/S Note: 5-140 2 if CC is false, 2+r if CC is true DC-8297-03 Z380TM USER'S MANUAL ZILOG RETB RETURN FROM BREAKPOINT Operation: PC (31-0) SPC (31-0) This instruction is used to return to a previously executing procedure at the end of a breakpoint. The contents of the Shadow Program Counter (SPC), which holds the address of the next instruction of the previously executing procedure, are loaded into the Program Counter (PC). Note that maskable interrupts (if IEF1 is set) and non-maskable interrupt are enabled after the instruction following RETB is executed. Flags: Addressing Mode DC-8297-03 S: Unaffected Z: Unaffected H: Unaffected V: Unaffected N: Unaffected C: Unaffected Syntax RETB Instruction Format 11101101 01010101 Execute Time 2 Note 5-141 Z380TM USER'S MANUAL ZILOG RETI RETURN FROM INTERRUPT RETI Operation: if (XM) then begin PC(7-0) PC(15-8) PC(23-16) PC(31-24) SP end else begin PC(7-0) PC(15-8) SP end (SP) (SP+1) (SP+2) (SP+3) SP + 4 (SP) (SP+1) SP + 2 This instruction is used to return to a previously executing procedure at the end of a procedure entered by an interrupt. The contents of the location addressed by the Stack Pointer (SP) are popped into the Program Counter (PC), thereby specifying the location of the next instruction to be executed. A special sequence of bus transactions is performed when this instruction is executed in order to control Z80 family peripherals; see the description of the external interface for more details. Flags: Addressing Mode 5-142 S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax RETI Instruction Format 11101101 01001101 Execute Time 2+r Note X DC-8297-03 Z380TM USER'S MANUAL ZILOG RETN RETURN FROM NONMASKABLE INTERRUPT RETN Operation: if (XM) then begin PC(7-0) PC(15-8) PC(23-16) PC(31-24) SP end else begin PC(7-0) PC(15-8) SP end IEF1 (SP) (SP+1) (SP+2) (SP+3) SP + 4 (SP) (SP+1) SP + 2 IEF2 This instruction is used to return to a previously executing procedure at the end of a procedure entered by a nonmaskable interrupt. The contents of the location addressed by the Stack Pointer (SP) are popped into the Program Counter (PC), thereby specifying the location of the next instruction to be executed. The previous setting of the interrupt enable bit is restored by execution of this instruction. Flags: Addressing Mode DC-8297-03 S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax RETN Instruction Format 11101101 01000101 Execute Time 2+r Note X 5-143 Z380TM USER'S MANUAL ZILOG RL ROTATE LEFT (BYTE) RL dst Operation: dst = R, IR, X tmp dst(0) C dst(n+1) dst C dst(7) tmp(n) for n = 0 to 6 The contents of the destination operand are concatenated with the Carry flag and together they are rotated left one bit position. Bit 7 of the destination operand is moved to the Carry flag and the Carry flag is moved to bit 0 of the destination. Flags: Addressing Mode R: IR: X: S: Z: H: P: N: C: Syntax RL R RL (HL) RL (XY+d) Field Encodings: r: y: 5-144 Set if the most significant bit of the result is set; cleared otherwise Set if the result is zero; cleared otherwise Cleared Set if parity of the result is even; cleared otherwise Cleared Set if the bit rotated from bit 7 was a 1; cleared otherwise Instruction Format 11001011 00010-r11001011 00010110 11y11101 11001011 ----d-- 00010110 Execute Time 2 2+r 4+r Note I per convention 0 for IX, 1 for IY DC-8297-03 Z380TM USER'S MANUAL ZILOG RLW ROTATE LEFT (WORD) RLW dst Operation: tmp dst(0) C dst(n+1) dst = R, RX, IR, X dst C dst(15) tmp(n) for n = 0 to 14 The contents of the destination operand are concatenated with the Carry flag and together they are rotated left one bit position. The most significant bit of the destination operand is moved to the Carry flag and the Carry flag is moved to bit 0 of the destination. Flags: Addressing Mode R: RX: IR: X: S: Z: H: P: N: C: Set if the most significant bit of the result is set; cleared otherwise Set if the result is zero; cleared otherwise Cleared Set if parity of the result is even; cleared otherwise Cleared Set if the bit rotated from the most significant bit was a 1; cleared otherwise Syntax RLW R RLW RX RLW (HL) RLW (XY+d) Instruction Format 11101101 11001011 000100rr 11101101 11001011 0001010y 11101101 11001011 00010010 11y11101 11001011 ----d-- 00010010 Execute Time 2 2 2+r 4+r Note I Field Encodings: rr: 00 for BC, 01 for DE, 11 for HL y: 0 for IX, 1 for IY DC-8297-03 5-145 Z380TM USER'S MANUAL ZILOG RLA ROTATE LEFT (ACCUMULATOR) RLA Operation: tmp A(0) C A(n+1) A C A(7) tmp(n) for n = 0 to 6 The contents of the accumulator are concatenated with the Carry flag and together they are rotated left one bit position. Bit 7 of the accumulator is moved to the Carry flag and the Carry flag is moved to bit 0 of the accumulator. Flags: Addressing Mode 5-146 S: Z: H: P: N: C: Unaffected Unaffected Cleared Unaffected Cleared Set if the bit rotated from bit 7 was a 1; cleared otherwise Syntax RLA Instruction Format 00010111 Execute Time 2 Note DC-8297-03 Z380TM USER'S MANUAL ZILOG RLC ROTATE LEFT CIRCULAR (BYTE) RLC dst Operation: tmp C dst(0) dst(n+1) dst = R, IR, X dst dst(7) tmp(7) tmp(n) for n = 0 to 6 The contents of the destination operand are rotated left one bit position. Bit 7 of the destination operand is moved to the bit 0 position and also replaces the Carry flag. Flags: Addressing Mode R: IR: X: S: Z: H: P: N: C: Set if the most significant bit of the result is set; cleared otherwise Set if the result is zero; cleared otherwise Cleared Set if parity of the result is even; cleared otherwise Cleared Set if the bit rotated from bit 7 was a 1; cleared otherwise Syntax RLC R RLC (HL) RLC (XY+d) Field Encodings: r: y: DC-8297-03 Instruction Format 11001011 00000-r11001011 00000110 11y11101 11001011 ----d-- 00000110 Execute Time 2 2+r 4+r Note I per convention 0 for IX, 1 for IY 5-147 Z380TM USER'S MANUAL ZILOG RLCW ROTATE LEFT CIRCULAR (WORD) RLCW dst Operation: tmp C dst(0) dst(n+1) dst = R, RX, IR, X dst dst(15) tmp(15) tmp(n) for n = 0 to 14 The contents of the destination operand are rotated left one bit position. The most significant bit of the destination operand is moved to the bit 0 position and also replaces the Carry flag. Flags: Addressing Mode R: RX: IR: X: S: Z: H: P: N: C: Set if the most significant bit of the result is set; cleared otherwise Set if the result is zero; cleared otherwise Cleared Set if parity of the result is even; cleared otherwise Cleared Set if the bit rotated from the most significant bit was a 1; cleared otherwise Syntax RLCW R RLCW RX RLCW (HL) RLCW (XY+d) Instruction Format 11101101 11001011 000000rr 11101101 11001011 0000010y 11101101 11001011 00000010 11y11101 11001011 ----d-- 00000010 Execute Time 2 2 2+r 4+r Note I Field Encodings: rr: 00 for BC, 01 for DE, 11 for HL y: 0 for IX, 1 for IY 5-148 DC-8297-03 Z380TM USER'S MANUAL ZILOG RLCA ROTATE LEFT CIRCULAR (ACCUMULATOR) RLCA Operation: tmp C A(0) A(n+1) A A(7) tmp(7) tmp(n) for n = 0 to 6 The contents of the accumulator are rotated left one bit position. Bit 7 of the accumulator is moved to the bit 0 position and also replaces the Carry flag. Flags: Addressing Mode DC-8297-03 S: Z: H: P: N: C: Unaffected Unaffected Cleared Unaffected Cleared Set if the bit rotated from bit 7 was a 1; cleared otherwise Syntax RLCA Instruction Format 00000111 Execute Time 2 Note 5-149 Z380TM USER'S MANUAL ZILOG RLD ROTATE LEFT DIGIT RLD Operation: tmp(3-0) A(3-0) dst(7-4) dst(3-0) A(3-0) dst(7-4) dst(3-0) tmp(3-0) The low digit of the accumulator is logically concatenated to the destination byte whose memory address is in the HL register. The resulting three-digit quantity is rotated to the left by one BCD digit (four bits). The lower digit of the source is moved to the upper digit of the source; the upper digit of the source is moved to the lower digit of the accumulator, and the lower digit of the accumulator is moved to the lower digit of the source. The upper digit of the accumulator is unaffected. In multiple-digit BCD arithmetic, this instruction can be used to shift to the left a string of BCD digits, thus multiplying it by a power of ten. The accumulator serves to transfer digits between successive bytes of the string. This is analogous to the use of the Carry flag in multiple-precision shifting using the RL instruction. Flags: Addressing Mode 5-150 S: Z: H: P: N: C: Set if the accumulator is negative after the operation; cleared otherwise Set if the accumulator is zero after the operation; cleared otherwise Cleared Set if the parity of the accumulator is even after the operation; cleared otherwise Cleared Unaffected Syntax RLD Instruction Format 11101101 01101111 Execute Time 3+r Note DC-8297-03 Z380TM USER'S MANUAL ZILOG RR ROTATE RIGHT (BYTE) RR dst Operation: tmp dst(7) C dst(n) dst = R, IR, X dst C dst(0) tmp(n+1) for n = 0 to 6 The contents of the destination operand are concatenated with the Carry flag and together they are rotated right one bit position. Bit 0 of the destination operand is moved to the Carry flag and the Carry flag is moved to bit 7 of the destination. Flags: Addressing Mode R: IR: X: S: Z: H: P: N: C: Syntax RR R RR (HL) RR (XY+d) Field Encodings: r: y: DC-8297-03 Set if the most significant bit of the result is set; cleared otherwise Set if the result is zero; cleared otherwise Cleared Set if parity of the result is even; cleared otherwise Cleared Set if the bit rotated from bit 0 was a 1; cleared otherwise Instruction Format 11001011 00011-r11001011 00011110 11y11101 11001011 ----d-- 00011110 Execute Time 2 2+r 4+r Note I per convention 0 for IX, 1 for IY 5-151 Z380TM USER'S MANUAL ZILOG RRW ROTATE RIGHT (WORD) RRW dst Operation: tmp C dst(15) dst(n) dst = R, RX, IR, X dst dst(0) C tmp(n+1) for n = 0 to 14 The contents of the destination operand are concatenated with the Carry flag and together they are rotated right one bit position. Bit 0 of the destination operand is moved to the Carry flag and the Carry flag is moved to the most significant bit of the destination. Flags: Addressing Mode R: RX: IR: X: S: Z: H: P: N: C: Set if the most significant bit of the result is set; cleared otherwise Set if the result is zero; cleared otherwise Cleared Set if parity of the result is even; cleared otherwise Cleared Set if the bit rotated from bit 0 was a 1; cleared otherwise Syntax RRW R RRW RX RRW (HL) RRW (XY+d) Instruction Format 11101101 11001011 000110rr 11101101 11001011 0001110y 11101101 11001011 00011010 11y11101 11001011 ----d-- 00011010 Execute Time 2 2 2+r 4+r Note I Field Encodings: rr: 00 for BC, 01 for DE, 11 for HL y: 0 for IX, 1 for IY 5-152 DC-8297-03 Z380TM USER'S MANUAL ZILOG RRA ROTATE RIGHT (ACCUMULATOR) RRA Operation: tmp A(7) C A(n) A C A(0) tmp(n+1) for n = 0 to 6 The contents of the accumulator are concatenated with the Carry flag and together they are rotated right one bit position. Bit 0 of the accumulator is moved to the Carry flag and the Carry flag is moved to bit 7 of the accumulator. Flags: Addressing Mode DC-8297-03 S: Z: H: P: N: C: Unaffected Unaffected Cleared Unaffected Cleared Set if the bit rotated from bit 0 was a 1; cleared otherwise Syntax RRA Instruction Format 00011111 Execute Time 2 Note 5-153 Z380TM USER'S MANUAL ZILOG RRC ROTATE RIGHT CIRCULAR (BYTE) RRC dst Operation: tmp C dst(7) dst(n) dst = R, IR, X dst dst(0) tmp(0) tmp(n+1) for n = 0 to 6 The contents of the destination operand are rotated right one bit position. Bit 0 of the destination operand is moved to the bit 7 position and also replaces the Carry flag. Flags: Addressing Mode R: IR: X: S: Z: H: P: N: C: Syntax RRC R RRC (HL) RRC (XY+d) Field Encodings: r: y: 5-154 Set if the most significant bit of the result is set; cleared otherwise Set if the result is zero; cleared otherwise Cleared Set if parity of the result is even; cleared otherwise Cleared Set if the bit rotated from bit 0 was a 1; cleared otherwise Instruction Format 11001011 00001-r11001011 00001110 11y11101 11001011 ----d-- 00001110 Execute Time 2 2+r 4+r Note I per convention 0 for IX, 1 for IY DC-8297-03 Z380TM USER'S MANUAL ZILOG RRCW ROTATE RIGHT CIRCULAR (WORD) RRCW dst Operation: tmp C dst(15) dst(n) dst = R, RX, IR, X dst dst(0) tmp(0) tmp(n+1) for n = 0 to 14 The contents of the destination operand are rotated right one bit position. Bit 0 of the destination operand is moved to the most significant bit position and also replaces the Carry flag. Flags: Addressing Mode R: RX: IR: X: S: Z: H: P: N: C: Set if the most significant bit of the result is set; cleared otherwise Set if the result is zero; cleared otherwise Cleared Set if parity of the result is even; cleared otherwise Cleared Set if the bit rotated from bit 0 was a 1; cleared otherwise Syntax RRCW R RRCW RX RRCW (HL) RRCW (XY+d) Instruction Format 11101101 11001011 000010rr 11101101 11001011 0000110y 11101101 11001011 00001010 11y11101 11001011 ----d-- 00001010 Execute Time 2 2 2+r 4+r Note I Field Encodings: rr: 00 for BC, 01 for DE, 11 for HL y: 0 for IX, 1 for IY DC-8297-03 5-155 Z380TM USER'S MANUAL ZILOG RRCA ROTATE RIGHT CIRCULAR (ACCUMULATOR) RRCA Operation: tmp C A(7) A(n) A A(0) tmp(0) tmp(n+1) for n = 0 to 6 The contents of the accumulator are rotated right one bit position. Bit 0 of the accumulator is moved to the bit 7 position and also replaces the Carry flag. Flags: Addressing Mode 5-156 S: Z: H: P: N: C: Unaffected Unaffected Cleared Unaffected Cleared Set if the bit rotated from bit 0 was a 1; cleared otherwise Syntax RRCA Instruction Format 00001111 Execute Time 2 Note DC-8297-03 Z380TM USER'S MANUAL ZILOG RRD ROTATE RIGHT DIGIT RRD Operation: tmp(3-0) A(3-0) dst(3-0) dst(7-4) A(3-0) dst(3-0) dst(7-4) tmp(3-0) The low digit of the accumulator is logically concatenated to the destination byte whose memory address is in the HL register. The resulting three-digit quantity is rotated to the right by one BCD digit (four bits). The upper digit of the source is moved to the lower digit of the source; the lower digit of the source is moved to the lower digit of the accumulator, and the lower digit of the accumulator is moved to the upper digit of the source. The upper digit of the accumulator is unaffected. In multiple-digit BCD arithmetic, this instruction can be used to shift to the right a string of BCD digits, thus dividing it by a power of ten. The accumulator serves to transfer digits between successive bytes of the string. This is analogous to the use of the Carry flag in multiple-precision shifting using the RR instruction. Flags: Addressing Mode DC-8297-03 S: Z: H: P: N: C: Set if the accumulator is negative after the operation; cleared otherwise Set if the accumulator is zero after the operation; cleared otherwise Cleared Set if the parity of the accumulator is even after the operation; cleared otherwise Cleared Unaffected Syntax RRD Instruction Format 11101101 01100111 Execute Time 3+r Note 5-157 Z380TM USER'S MANUAL ZILOG RST RESTART RST address Operation: if (XM) then begin SP SP - 4 (SP) PC(7-0) (SP+1) PC(15-8) (SP+2) PC(23-16) (SP+3) PC(31-24) end else begin SP SP - 2 (SP) PC(7-0) (SP+1) PC(15-8) end PC address The current Program Counter (PC) is pushed onto the stack and the PC is loaded with a constant address encoded in the instruction. Execution then begins at this address. The restart instruction allows for a call to one of eight fixed locations as shown in the table below. The table also indicates the encoding of the address used in the instruction encoding. (The address is in hexadecimal, the encoding in binary.) Address 00000000h 00000008h 00000010h 00000018h 00000020h 00000028h 00000030h 00000038h Flags: Addressing Mode S: Z: H: V: N: C: t encoding 000 001 010 011 100 101 110 111 Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax RST address Instruction Format 11-t-111 Execute Time 4+w Note X Field Encodings: 000 for 00h, 001 for 08h, 010 for 10h, 011 for 18h, 100 for 20h, 101 for 28h, 110 for 30h, 111 for 38h 5-158 DC-8297-03 Z380TM USER'S MANUAL ZILOG SBC SUBTRACT WITH CARRY (BYTE) SBC A,src Operation: A src = R, RX, IM, IR, X A - src - C The source operand together with the Carry flag is subtracted from the accumulator and the difference is stored in the accumulator. The contents of the source are unaffected. Two's complement subtraction is performed. Flags: S: Z: H: V: N: C: Addressing Mode R: RX: IM: IR: X: Set if the result is negative; cleared otherwise Set if the result is zero; cleared otherwise Set if there is a borrow from bit 4 of the result; cleared otherwise Set if arithmetic overflow occurs, that is, if the operands are of different signs and the result is of the same sign as the source; cleared otherwise Set Set if there is a borrow from the most significant bit of the result; cleared otherwise Syntax SBC A,R SBC A,RX SBC A,n SBC A,(HL) SBC A,(XY+d) Instruction Format 10011-r11y11101 1001110w 11011110 ----n-- 10011110 11y11101 10011110 ----d-- Execute Time 2 2 2 2+r 4+r Note I Field Encodings: r: per convention y: 0 for IX, 1 for IY w: 0 for high byte, 1 for low byte DC-8297-03 5-159 Z380TM USER'S MANUAL ZILOG SBC SUBTRACT WITH CARRY (WORD) SBC HL,src Operation: HL(15-0) dst = HL src = BC, DE, HL, SP HL(15-0) - src(15-0) - C The source operand together with the Carry flag is subtracted from the HL register and the difference is stored in the HL register. The contents of the source are unaffected. Two's complement subtraction is performed. Flags: S: Z: H: V: N: C: Addressing Mode R: Set if the result is negative; cleared otherwise Set if the result is zero; cleared otherwise Set if there is a borrow from bit 12 of the result; cleared otherwise Set if arithmetic overflow occurs, that is, if the operands are of different signs and the result is of the same sign as the the source; cleared otherwise Set Set if there is a borrow from the most significant bit of the result; cleared otherwise Syntax SBC HL,R Instruction Format 11101101 01rr0010 Execute Time 2 Note Field Encodings: rr: 00 for BC, 01 for DE, 10 for HL, 11 for SP 5-160 DC-8297-03 Z380TM USER'S MANUAL ZILOG SBCW SUBTRACT WITH CARRY (WORD) SBCW [HL,]src Operation: src = R, RX, IM, X HL(15-0) HL(15-0) - src(15-0) - C The source operand together with the Carry flag is subtracted from the HL register and the difference is stored in the HL register. The contents of the source are unaffected. Two's complement subtraction is performed. Flags: S: Z: H: V: N: C: Addressing Mode R: RX: IM: X: Set if the result is negative; cleared otherwise Set if the result is zero; cleared otherwise Set if there is a borrow from bit 12 of the result; cleared otherwise Set if arithmetic overflow occurs, that is, if the operands are of different signs and the result is of the same sign as the source; cleared otherwise Set Set if there is a borrow from the most significant bit of the result; cleared otherwise Syntax SBCW [HL,]R SBCW [HL,]RX SBCW [HL,]nn SBCW [HL,](XY+d) Instruction Format 11101101 100111rr 11y11101 10011111 11101101 10011110 -n(low) -n(high)11y11101 11011110 ----d-- Execute Time 2 2 2 4+r Note I Field Encodings: rr: 00 for BC, 01 for DE, 11 for HL y: 0 for IX, 1 for IY DC-8297-03 5-161 Z380TM USER'S MANUAL ZILOG SCF SET CARRY FLAG SCF Operation: C 1 The Carry flag is set to 1. Flags: Addressing Mode 5-162 S: Z: H: V: N: C: Unaffected Unaffected Cleared Unaffected Cleared Set Syntax SCF Instruction Format 00110111 Execute Time 2 Note DC-8297-03 Z380TM USER'S MANUAL ZILOG SET SET BIT SET b, dst Operation: dst = R, IR, X dst(b) 1 The specified bit b within the destination operand is set to 1. The other bits in the destination are unaffected. The bit to be set is specified by a 3-bit field in the instruction; this field contains the binary encoding for the bit number to be set. The bit number b must be between 0 and 7. Flags: Addressing Mode R: IR: X: S: Z: H: V: N: C: Syntax SET b,R SET b,(HL) SET b,(XY+d) Field Encodings: DC-8297-03 Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected r: y: Instruction Format 11001011 11bbb -r11001011 11bbb110 11y11101 11001011 ----d-- 11bbb110 Execute Time 2 2+r 4+r Note I per convention 0 for IX, 1 for IY 5-163 Z380TM USER'S MANUAL ZILOG SETC SET CONTROL BIT SETC mode Operation: mode = LCK, LW, XM if (mode = LCK) then begin SR(1) 1 end else if (mode = LW) then begin SR(6) 1 end else begin SR(7) 1 end When setting Lock mode (LCK), the LCK bit (bit 1) in the Select Register (SR) is set to 1, disabling external bus requests. Note that bus requests are not disabled until after this instruction has been executed, and that one or more of the succeeding instructions may also have been fetched for decoding before this instruction has been executed. When setting Long Word mode (LW), the LW bit (bit 6) in the SR is set to 1, selecting 32-bit words. When using 32-bit words, all word load instructions transfer 32 bits. When setting Extended mode (XM), the XM bit (bit 7) in the SR is set to 1, selecting addresses modulo 4,294,967,296 (32 bits) as opposed to addresses modulo 65536 (16 bits) in Native mode. In Extended mode CALL and RETurn instructions save and restore 32 bit PC values to and from the stack, and the PC pushed to the stack in response to an interrupt is 32 bits. In Extended mode, address manipulation instructions such as INCrement, DECrement, ADD, and Jump Relative (JR) employ 32-bit addresses. Note that it is not possible to exit from Extended mode except via reset. Flags: Addressing Mode S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax SETC mode Field Encodings: mm: 5-164 Instruction Format 11mm1101 11110111 Execute Time 4 Note 01 for LW, 10 for LCK, 11 for XM DC-8297-03 Z380TM USER'S MANUAL ZILOG SLA SHIFT LEFT ARITHMETIC (BYTE) SLA dst Operation: dst = R, IR, X tmp C dst(0) dst(n+1) dst dst(7) 0 tmp(n) for n = 0 to 6 The contents of the destination operand are shifted left one bit position. Bit 7 of the destination operand is moved to the Carry flag and zero is shifted into bit 0 of the destination. Flags: Addressing Mode R: IR: X: S: Z: H: P: N: C: Syntax SLA R SLA (HL) SLA (XY+d) Field Encodings: r: y: DC-8297-03 Set if the most significant bit of the result is set; cleared otherwise Set if the result is zero; cleared otherwise Cleared Set if parity of the result is even; cleared otherwise Cleared Set if the bit shifted from bit 7 was a 1; cleared otherwise Instruction Format 11001011 00100-r11001011 00100110 11y11101 11001011 ----d-- 00100110 Execute Time 2 2+r 4+r Note I per convention 0 for IX, 1 for IY 5-165 Z380TM USER'S MANUAL ZILOG SLAW SHIFT LEFT ARITHMETIC (WORD) SLAW dst Operation: tmp dst(0) C dst(n+1) dst = R, RX, IR, X dst 0 dst(15) tmp(n) for n = 0 to 14 The contents of the destination operand are shifted left one bit position. The most significant bit of the destination operand is moved to the Carry flag and zero is shifted into bit 0 of the destination. Flags: Addressing Mode R: RX: IR: X: S: Z: H: P: N: C: Set if the most significant bit of the result is set; cleared otherwise Set if the result is zero; cleared otherwise Cleared Set if parity of the result is even; cleared otherwise Cleared Set if the bit shifted from the most significant bit was a 1; cleared otherwise Syntax SLAW R SLAW RX SLAW (HL) SLAW (XY+d) Instruction Format 11101101 11001011 001000rr 11101101 11001011 0010010y 11101101 11001011 00100010 11y11101 11001011 ----d-- 00100010 Execute Time 2 2 2+r 4+r Note I Field Encodings: rr: 00 for BC, 01 for DE, 11 for HL y: 0 for IX, 1 for IY 5-166 DC-8297-03 Z380TM USER'S MANUAL ZILOG SLP SLEEP SLP Operation: if (STBY not enabled) then CPU Halts else Z380 enters Standby mode With Standby mode disabled, this instruction is interpreted and executed as a HALT instruction. With Standby mode enabled, executing this instruction causes all device operation to stop, thus minimizing power dissipation. The /STNBY signal is asserted to indicate this Standby mode status. /STNBY remains asserted until an interrupt or reset request is accepted, which causes the device to exit Standby mode. If the option is enabled, an external bus request also causes the devcie to exit the Standby mode. Flags: Addressing Mode DC-8297-03 S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax SLP Instruction Format 11101101 01110110 Execute Time 2 Note 5-167 Z380TM USER'S MANUAL ZILOG SRA SHIFT RIGHT ARITHMETIC (BYTE) SRA dst Operation: tmp C dst(7) dst(n) dst = R, IR, X dst dst(0) tmp(7) tmp(n+1) for n = 0 to 6 The contents of the destination operand are shifted right one bit position. Bit 0 of the destination operand is moved to the Carry flag and bit 7 remains unchanged. Flags: Addressing Mode R: IR: X: S: Z: H: P: N: C: Syntax SRA R SRA (HL) SRA (XY+d) Field Encodings: r: y: 5-168 Set if the result is negative; cleared otherwise Set if the result is zero; cleared otherwise Cleared Set if parity of the result is even; cleared otherwise Cleared Set if the bit shifted from bit 0 was a 1; cleared otherwise Instruction Format 11001011 00101-r11001011 00101110 11y11101 11001011 ----d-- 00101110 Execute Time 2 2+r 4+r Note I per convention 0 for IX, 1 for IY DC-8297-03 Z380TM USER'S MANUAL ZILOG SRAW SHIFT RIGHT ARITHMETIC (WORD) SRAW dst Operation: tmp C dst(15) dst(n) dst = R, RX, IR, X dst dst(0) tmp(15) tmp(n+1) for n = 0 to 14 The contents of the destination operand are shifted right one bit position. Bit 0 of the destination operand is moved to the Carry flag and the most significant bit remains unchanged. Flags: Addressing Mode R: RX: IR: X: S: Z: H: P: N: C: Set if the result is negative; cleared otherwise Set if the result is zero; cleared otherwise Cleared Set if parity of the result is even; cleared otherwise Cleared Set if the bit shifted from bit 0 was a 1; cleared otherwise Syntax SRAW R SRAW RX SRAW (HL) SRAW (XY+d) Instruction Format 11101101 11001011 001010rr 11101101 11001011 0010110y 11101101 11001011 00101010 11y11101 11001011 ----d-- 00101010 Execute Time 2 2 2+r 4+r Note I Field Encodings: rr: 00 for BC, 01 for DE, 11 for HL y: 0 for IX, 1 for IY DC-8297-03 5-169 Z380TM USER'S MANUAL ZILOG SRL SHIFT RIGHT LOGICAL (BYTE) SRL dst Operation: tmp C dst(7) dst(n) dst = R, IR, X dst dst(0) 0 tmp(n+1) for n = 0 to 6 The contents of the destination operand are shifted right one bit position. Bit 0 of the destination operand is moved to the Carry flag and zero is shifted into bit 7 of the destination. Flags: Addressing Mode R: IR: X: S: Z: H: P: N: C: Syntax SRL R SRL (HL) SRL (XY+d) Field Encodings: r: y: 5-170 Cleared Set if the result is zero; cleared otherwise Cleared Set if parity of the result is even; cleared otherwise Cleared Set if the bit shifted from bit 0 was a 1; cleared otherwise Instruction Format 11001011 00111-r11001011 00111110 11y11101 11001011 ----d-- 00111110 Execute Time 2 2+r 4+r Note I per convention 0 for IX, 1 for IY DC-8297-03 Z380TM USER'S MANUAL ZILOG SRLW SHIFT RIGHT LOGICAL (WORD) SRLW dst Operation: tmp C dst(15) dst(n) dst = R, RX, IR, X dst dst(0) 0 tmp(n+1) for n = 0 to 14 The contents of the destination operand are shifted right one bit position. Bit 0 of the destination operand is moved to the Carry flag and zero is shifted into the most significant bit of the destination. Flags: Addressing Mode R: RX: IR: X: S: Z: H: P: N: C: Cleared Set if the result is zero; cleared otherwise Cleared Set if parity of the result is even; cleared otherwise Cleared Set if the bit shifted from bit 0 was a 1; cleared otherwise Syntax SRLW R SRLW RX SRLW (HL) SRLW (XY+d) Instruction Format 11101101 11001011 001110rr 11101101 11001011 0011110y 11101101 11001011 00111010 11y11101 11001011 ----d-- 00111010 Execute Time 2 2 2+r 4+r Note I Field Encodings: rr: 00 for BC, 01 for DE, 11 for HL y: 0 for IX, 1 for IY DC-8297-03 5-171 Z380TM USER'S MANUAL ZILOG SUB SUBTRACT (BYTE) SUB A,src Operation: A src = R, RX, IM, IR, X A - src The source operand is subtracted from the accumulator and the difference is stored in the accumulator. The contents of the source are unaffected. Two's complement subtraction is performed. Flags: Addressing Mode R: RX: IM: IR: X: S: Z: H: V: Set if the result is negative; cleared otherwise Set if the result is zero; cleared otherwise Set if there is a borrow from bit 4 of the result; cleared otherwise Set if arithmetic overflow occurs, that is, if the operands are of different signs and the result is of the same sign as the source; cleared otherwise N: Set C: Set if there is a borrow from the most significant bit of the result; cleared otherwise Syntax SUB A,R SUB A,RX SUB A,n SUB A,(HL) SUB A,(XY+d) Instruction Format 10010-r11y11101 1001010w 11010110 ----n-- 10010110 11y11101 10010110 ----d-- Execute Time 2 2 2 2+r 4+r Note I Field Encodings: r: per convention y: 0 for IX, 1 for IY w: 0 for high byte, 1 for low byte 5-172 DC-8297-03 Z380TM USER'S MANUAL ZILOG SUB SUBTRACT (WORD) SUB HL,src Operation: src = DA if (XM) then begin HL(31-0) end else begin HL(15-0) end HL(31-0) - src(31-0) HL(15-0) - src(15-0) The source operand is subtracted from the HL register and the difference is stored in the HL register. The contents of the source are unaffected. Two's complement subtraction is performed. Note that the length of the operand is controlled by the Extended/Native mode selection, which is consistent with the manipulation of an address by the instruction. Flags: Addressing Mode DA: DC-8297-03 S: Z: H: V: N: C: Unaffected Unaffected Set if there is a borrow from bit 12 of the result; cleared otherwise Unaffected Set Set if there is a borrow from the most significant bit of the result; cleared otherwise Syntax SUB HL,(nn) Instruction Format 11101101 11010110 -n(low)- -n(high) Execute Time 2+r Note I, X 5-173 Z380TM USER'S MANUAL ZILOG SUB SUBTRACT FROM STACK POINTER (WORD) SUB SP,src Operation: src = IM if (XM) then begin SP(31-0) end else begin SP(15-0) end SP(31-0) - src(31-0) SP(15-0) - src(15-0) The source operand is subtracted from the SP register and the difference is stored in the SP register. This has the effect of allocating or deallocating space on the stack. Two's complement subtraction is performed. Flags: Addressing Mode IM: 5-174 S: Z: H: V: N: C: Unaffected Unaffected Set if there is a borrow from bit 12 of the result; cleared otherwise Unaffected Set Set if there is a borrow from the most significant bit of the result; cleared otherwise Syntax SUB SP,nn Instruction Format 11101101 10010010 -n(low)- -n(high) Execute Time 2 Note I, X DC-8297-03 Z380TM USER'S MANUAL ZILOG SUBW SUBTRACT (WORD) SUBW [HL,]src Operation: HL(15-0) src = R, RX, IM, X HL(15-0) - src(15-0) The source operand is subtracted from the HL register and the difference is stored in the HL register. The contents of the source are unaffected. Two's complement subtraction is performed. Flags: S: Z: H: V: N: C: Addressing Mode R: RX: IM: X: Set if the result is negative; cleared otherwise Set if the result is zero; cleared otherwise Set if there is a borrow from bit 12 of the result; cleared otherwise Set if arithmetic overflow occurs, that is, if the operands are of different signs and the result is of the same sign as the source; cleared otherwise Set Set if there is a borrow from the most significant bit of the result; cleared otherwise Syntax SUBW [HL,]R SUBW [HL,]RX SUBW [HL,]nn SUBW [HL,](XY+d) Instruction Format 11101101 100101rr 11y11101 10010111 11101101 10010110 -n(low)- n(high)11y11101 11010110 ----d-- Execute Time 2 2 2 2+r Note I Field Encodings: rr: 00 for BC, 01 for DE, 11 for HL y: 0 for IX, 1 for IY DC-8297-03 5-175 Z380TM USER'S MANUAL ZILOG SWAP SWAP UPPER REGISTER WORD WITH LOWER REGISTER WORD SWAP src Operation: src = R, RX src(31-16) src(15-0) The contents of the most significant word of the source are exchanged with the contents of the least significant word of the source. Flags: Addressing Mode R: RX: S: Z: H: V: N: C: Unaffected Unaffected Unaffected Unaffected Unaffected Unaffected Syntax SWAP R SWAP RX Instruction Format 11101101 00rr1110 11y11101 00111110 Execute Time 2 2 Note Field Encodings: rr: 00 for BC, 01 for DE, 11 for HL y: 0 for IX, 1 for IY 5-176 DC-8297-03 Z380TM USER'S MANUAL ZILOG TST TEST (BYTE) TST src Operation: src = R, IM, IR A AND src A logical AND operation is performed between the corresponding bits of the source operand and the accumulator. The contents of both the accumulator and the source are unaffected; only the flags are modified as a result of this instruction. Flags: Addressing Mode R: IM: IR: S: Z: H: P: N: C: Syntax TST R TST n TST (HL) Field Encodings: r: DC-8297-03 Set if the most significant bit of the result is set; cleared otherwise Set if all bits of the result are zero; cleared otherwise Set Set if the parity is even; cleared otherwise Cleared Cleared Instruction Format 11101101 00-r-100 11101101 01100100 ----n-- 11101101 00110100 Execute Time 2 2 2+r Note per convention 5-177 Z380TM USER'S MANUAL ZILOG TSTIO TEST I/O PORT TSTIO src Operation: src = IM (C) AND src A logical AND operation is performed between the corresponding bits of the source and the contents of the I/O location. The contents of both the I/O location and the source are unaffected; only the flags are modified as a result of this instruction. No external I/O transaction will be generated as a result of this instruction, although the I/O address will appear on the adress bus while the internal read is occurring. The peripheral address in the C register is placed on the low byte of the address bus and zeros are placed on all other address lines. Flags: Addressing Mode 5-178 S: Z: H: P: N: C: Set if the most significant bit of the result is set; cleared otherwise Set if all bits of the result are zero; cleared otherwise Set Set if the parity is even; cleared otherwise Cleared Cleared Syntax TSTIO n Instruction Format 11101101 01110100 ----n-- Execute Time 3+i Note DC-8297-03 Z380TM USER'S MANUAL ZILOG XOR EXCLUSIVE OR (BYTE) XOR [A,]src Operation: A src = R, RX, IM, IR, X A XOR src A logical EXCLUSIVE OR operation is performed between the corresponding bits of the source operand and the accumulator and the result is stored in the accumulator. A 1 bit is stored wherever the corresponding bits in the two operands are different; otherwise a 0 bit is stored. The contents of the source are unaffected. Flags: Addressing Mode R: RX: IM: IR: X: S: Z: H: P: N: C: Set if the most significant bit of the result is set; cleared otherwise Set if all bits of the result are zero; cleared otherwise Cleared Set if the parity is even; cleared otherwise Cleared Cleared Syntax XOR [A,]R XOR [A,]RX XOR [A,]n XOR [A,](HL) XOR [A,](XY+d) Instruction Format 10101-r11y11101 1010110w 11101110 ----n-- 10101110 11y11101 10101110 ----d-- Execute Time 2 2 2 2+r 4+r Note I Field Encodings: r: per convention y: 0 for IX, 1 for IY w: 0 for high byte, 1 for low byte DC-8297-03 5-179 Z380TM USER'S MANUAL ZILOG XORW EXCLUSIVE OR (WORD) XORW [HL,]src Operation: HL(15-0) src = R, RX, IM, X HL(15-0) XOR src(15-0) A logical EXCLUSIVE OR operation is performed between the corresponding bits of the source operand and the HL register and the result is stored in the HL register. A 1 bit is stored wherever the corresponding bits in the two operands are different; otherwise a 0 bit is stored. The contents of the source are unaffected. Flags: Addressing Mode R: RX: IM: X: S: Z: H: P: N: C: Set if the most significant bit of the result is set; cleared otherwise Set if all bits of the result are zero; cleared otherwise Cleared Set if the parity is even; cleared otherwise Cleared Cleared Syntax XORW [HL,]R XORW [HL,]RX XORW [HL,]nn XORW [HL,](XY+d) Instruction Format 11101101 101011rr 11y11101 10101111 11101101 10101110 -n(low) -n(high)11y11101 11101110 ----d-- Execute Time 2 2 2 4+r Note I Field Encodings: rr: 00 for BC, 01 for DE, 11 for HL y: 0 for IX, 1 for IY (c) 1994, 1995, 1996, 1997 by Zilog, Inc. All rights reserved. No part of this document may be copied or reproduced in any form or by any means without the prior written consent of Zilog, Inc. The information in this document is subject to change without notice. Devices sold by Zilog, Inc. are covered by warranty and patent indemnification provisions appearing in Zilog, Inc. Terms and Conditions of Sale only. ZILOG, INC. MAKES NO WARRANTY, EXPRESS, STATUTORY, IMPLIED OR BY DESCRIPTION, REGARDING THE INFORMATION SET FORTH HEREIN OR REGARDING THE FREEDOM OF THE DESCRIBED DEVICES FROM INTELLECTUAL PROPERTY INFRINGEMENT. ZILOG, INC. MAKES NO WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PURPOSE. Zilog, Inc. shall not be responsible for any errors that may appear in this document. Zilog, Inc. makes no commitment to update or keep current the information contained in this document. 5-180 Zilog's products are not authorized for use as critical components in life support devices or systems unless a specific written agreement pertaining to such intended use is executed between the customer and Zilog prior to use. Life support devices or systems are those which are intended for surgical implantation into the body, or which sustains life whose failure to perform, when properly used in accordance with instructions for use provided in the labeling, can be reasonably expected to result in significant injury to the user. Zilog, Inc. 210 East Hacienda Ave. Campbell, CA 95008-6600 Telephone (408) 370-8000 Telex 910-338-7621 FAX 408 370-8056 Internet: http://www.zilog.com DC-8297-03 Z380TM USER'S MANUAL ZILOG USER's MANUAL CHAPTER 6 INTERRUPTS AND TRAPS 6.1 INTRODUCTION Exceptions are conditions that can alter the normal flow of program execution. The Z380TM CPU supports three kinds of exceptions; interrupts, traps, and resets. Interrupts are asynchronous events generated by a device external to the CPU; peripheral devices use interrupts to request service from the CPU. Traps are synchronous events generated internally in the CPU by a particular condition that can occur during the attempted execution of an instruction--in particular, when executing undefined instructions. Thus, the difference between Traps and Interrupts is their origin. A Trap condition is always reproducible by re-executing the program that created the Trap, whereas an Interrupt is generally independent of the currently executing task. A hardware reset overrides all other conditions, including Interrupts and Traps. It occurs when the /RESET line is activated and causes certain CPU control registers to be initialized. Resets are discussed in detail in Chapter 7. The Z380 MPU's Interrupt and Trap structure provides compatibility with the existing Z80 and Z180 MPU's with the following exception--the undefined opcode Trap occurrence is with respect to the Z380 instruction set, and its response is improved (vs the Z180) to make Trap handling easier. The Z380 MPU also offers additional features to enhance flexibility in system design. 6.2 INTERRUPTS Of the five external Interrupt inputs provided, one is assigned as a Nonmaskable Interrupt, /NMI. The remaining inputs, /INT3-/INT0, are four asynchronous maskable Interrupt requests. The Nonmaskable Interrupt; (NMI) is an Interrupt that cannot be disabled (masked) by software. Typically NMI is reserved for high priority external events that need immediate attention, such as an imminent power failure. Maskable Interrupts are Interrupts that can be disabled (masked) through software by cleaning the appropriate bits in the Interrupt Enable Register (IER) and IEF1 bit in the Select Register (SR). All of these four maskable Interrupt inputs (/INT3-/INT0) are external input signals to the Z380 CPU core. The four Interrupt enable bits in the Interrupt Enable Register determine (IER; Internal I/O address: 17H) which of the requested Interrupts are accepted. Each Interrupt input has a fixed priority, with /INT0 as the highest and /INT3 as the lowest. The Enable Interrupt (EI) instruction is used to selectively enable the maskable Interrupts (by setting the appropriate bits in the IER register and IEF1 bit in the SR register) and DC-8297-03 the Disable Interrupt instruction is used to selectively disable interrupts (by clearing appropriate bits in the IER, and/or clearing IEF1 bit in the SR register). When an Interrupt source has been disabled, the CPU ignores any request from that source. Because maskable Interrupt requests are not retained by the CPU, the request signal on a maskable Interrupt line must be asserted until the CPU acknowledges the request. When enabling Interrupts with the EI instruction, all maskable Interrupts are automatically disabled (whether previously enabled or not) for the duration of the execution of the EI instruction and the instruction immediately following. Interrupts are always accepted between instructions. The block move, block search, and block I/O instructions can be interrupted after any iteration. The Z380 CPU has four selectable modes for handling externally generated Interrupts, using the IM instruction. The first three modes extend the Z80 CPU Interrupt Modes to accommodate the Z380 CPU's additional Interrupt inputs in a compatible fashion. The fourth mode allows more flexibility in interrupt handling. 6-1 Z380TM USER'S MANUAL ZILOG 6.2 INTERRUPTS (Continued) In an Interrupt acknowledge transaction, address outputs A31-A4 are driven to logic 1. One output among A3-A0 is driven to logic 0 to indicate the maskable interrupt request being acknowledged. If /INT0 is being acknowledged, A3A1 are at logic 1 and A0 is at logic 0. For the maskable Interrupt on /INT0 input, Interrupt Modes 0 through 3 are supported. Modes 0, 1, and 2 have the same schemes as those in the Z80 and Z180 MPU's. Mode 3 is similar to mode 2, except that 16-bit Interrupt vectors are expected from the I/O devices. Note that 8-bit and 16bit I/O devices can be intermixed in this mode by having external pull-up resistors at the data bus signals D15-D8, for example. The external maskable Interrupt requests /INT3-/INT1 are always handled in an assigned Interrupt vectors mode regardless of the current Interrupt Mode (IM3-IM0) in effect. As discussed in the CPU Architecture section, the Z380 MPU can operate in either the Native or Extended mode. In Native mode, pushing and popping of the stack to save and retrieve interrupted PC values in Interrupt handling are done in 16-bit sizes, and the Stack Pointer rolls over at the 64 Kbyte boundary. In Extended mode, the PC pushes and pops are done in 32-bit sizes, and the Stack Pointer rolls over at the 4 Gbyte memory space boundary. The Z380 MPU provides an Interrupt Register Extension, whose contents are always output as the address bus signals A31-A16 when fetching the starting addresses of service routines from memory in Interrupt Modes 2, 3, and the assigned vectors mode. In Native mode, such fetches are automatically done in 16-bit sizes and in Extended mode, in 32-bit sizes. These starting addresses should be evenaligned in memory locations. That is, their least significant bytes should have addresses with A0 = 0. 6.2.1 Interrupt Priority Ranking The Z380 MPU assigns a fixed priority ranking to handle its Interrupt sources, as shown in Table 6-1. Table 6-1. Interrupt Priority Ranking Priority Interrupt Sources Highest Trap (undefined opcode) /NMI /INT0 /INT1 /INT2 /INT3 Lowest 6.2.2 Interrupt Control The Z380 MPU's flags and registers associated with Interrupt processing are listed in Table 6-2. As discussed in the Chapter 1, "CPU Architecture," some of these registers reside in the on-chip I/O address space, and can be accessed only with reserved on-chip I/O instructions. Table 6-2. Interrupt Flags and Registers Names Mnemonics Access Methods Interrupt Enable Flags Interrupt Register Interrupt Register Extension IEF1,IEF2 I Iz Interrupt Enable Register IER Assigned Vectors Base and Trap Register Trap and Break Register AVBR TRPBK EI and DI Instructions LD I,A and LD A,I Instructions LD I,HL and LD HL,I Instructions (Accessing both Iz and I) On-chip I/O Instructions, Address 17H EI and DI Instruction On-Chip I/O Instructions, Address 18H On-Chip I/O Instructions, Address 19H 6-2 DC-8297-03 Z380TM USER'S MANUAL ZILOG 6.2.2.1 IEF1, IEF2 IEF1 controls the overall enabling and disabling of all onchip peripheral and external maskable Interrupt requests. If IEF1 is at logic 0, all such Interrupts are disabled. The purpose of IEF2 is to correctly manage the occurrence of /NMI. When /NMI is acknowledged, the state of IEF1 is copied to IEF2 and then IEF1 is cleared to logic 0. At the end of the /NMI interrupt service routine, execution of the Return From Nonmaskable Interrupt instruction, RETN, automatically copies the state of IEF2 back to IEF1. This is a means to restore the Interrupt enable condition existing before the occurrence of /NMI. Table 6-3 summarizes the states of IEF1 and IEF2 resulting from various operations. Table 6-3. Operation Effects on IEF1 and IEF2 Operation IEF1 IEF2 Comments /RESET Trap /NMI RETN /INT3-/INT0 RETI RET 0 0 0 IEF2 0 NC NC 0 0 IEF1 NC 0 NC NC Inhibits all interrupts except Trap and /NMI. Disables interrupt nesting. IEF1 value copied to IEF2, then IEF1 is cleared. Returns from /NMI service routine. Disables interrupt nesting. Returns from Interrupt service routine, Z80 I/O device. Returns from service routine, or returns from Interrupt service routine for a non-Z80 I/O device. EI DI LD A,I or LD R,I LD HL,I or LD HL,R 1 0 NC NC 1 0 NC NC IEF2 value is copied to P/V Flag. (NC = No Change) 6.2.2.2 I, I Extend The 8-bit Interrupt Register and the 16-bit Interrupt Register Extension are cleared during reset. 6.2.2.3 Interrupt Enable Register D7-D4 Reserved Read as 0, should write to as 0. D3-D0 IE3-IE0 (Interrupt Request Enable Flags) These flags individually indicate if /INT3, /INT2, /INT1, or /INT0 is enabled. Note that these flags are conditioned with the Enable and Disable Interrupt instructions (with arguments) (See Figure 6.1). 6.2.2.4 Assigned Vectors Base Register D7-D1 AB15-AB9 (Assigned Vectors Base). The Interrupt Register Extension, Iz, together with AB15-AB9, define the base address of the assigned Interrupt vectors table in memory space (See Figure 6-2). D0 Reserved. Read as 0, should write to as 0. AVBR: 00000018H R/W 7 0 AB15 AB14 AB13 AB12 AB11 AB10 AB9 0 0 0 0 0 0 0 -0 Reset Value IER: 00000017H Read Only Reserved Program as 0 Read as 0 0 7 -- -- -- -- IE3 IE2 IE1 IE0 0 0 0 0 0 0 0 1 Reset Value Encoded Interrupt Requests Assigned Vectors Base Figure 6-2. Assigned Vectors Base Register Interrupt Requests Enable Figure 6-1. Interrupt Enable Register DC-8297-03 6-3 Z380TM USER'S MANUAL ZILOG 6.2.2.5 Trap and Break Register D7-D2 Reserved. Some of these bits are reserved for development support functions. Read as 0, should write to as 0. D1 TF (Trap on Instruction Fetch). TF goes active to logic 1 when an undefined opcode fetched in the instruction stream is detected. TF can be reset under program control by writing it with a logic 0. However, it cannot be written with a logic 1. D0 TV (Trap on Interrupt Vector). TV goes active to logic 1 when an undefined opcode is returned as a vector in an Interrupt acknowledge transaction in mode 0. TV can be reset under program control by writing it with a logic 0. However, it cannot be written with a logic 1 (See Figure 6-3). TRPBK: 00000019H R/W 7 0 -- -- -- -- -- -- TF TV 0 0 0 0 0 0 0 0 Reset Value Trap on Interrupt Vector Trap on Instruction Fetch Reserved Program as 0 Read as 0 Figure 6-3. Trap and Break Register 6.3 TRAP INTERRUPT The Z380 MPU generates a Trap when an undefined opcode is encountered. The Trap is enabled immediately after reset, and it is not maskable. This feature can be used to increase software reliability or to implement "extended" instructions. An undefined opcode can be fetched from the instruction stream, or it can be returned as a vector in an Interrupt acknowledge transaction in Interrupt Mode 0. When a Trap occurs, the Z380 MPU operates as follows. 1. The TF or TV bit in the Assigned Vectors Base and Trap Register goes active, to indicate the source of the undefined opcode. 2. If the undefined opcode was fetched from the instruction stream, the starting address of the Trap causing the instruction is pushed onto the stack. (Note that the starting address of decoder directive(s) preceding an instruction encoding is considered the starting address of the instruction.) 6-4 If the undefined opcode was a returned Interrupt vector, the interrupted PC value is pushed onto the stack. 3. The states of IEF1 and IEF2 are cleared. 4. The Z380 MPU commences to fetch and execute instructions from address 00000000H. Note that instruction execution resumes at address 0, similar to the occurrence of a reset. Testing the TF and TV bits in the Assigned Vectors Base and Trap Register will distinguish the two events. Even if Trap handling is not in place, repeated restarts from address 0 is an indicator of possible illegal instructions at system debugging. DC-8297-03 Z380TM USER'S MANUAL ZILOG 6.4 NONMASKABLE INTERRUPT The Nonmaskable Interrupt Input /NMI is edge sensitive, with the Z380 MPU internally latching the occurrence of its falling edge. When the latched version of /NMI is recognized, the following operations are performed. 2. The state of IEF1 is copied to IEF2, then IEF1 is cleared. 3. The Z380 MPU commences to fetch and execute instructions from address 00000066H. 1. The Interrupted PC (Program Counter) value is pushed onto the stack. The size of the PC value pushed onto the stack depends on Native (one word) or Extended mode (two words) in effect. 6.5 INTERRUPT RESPONSE FOR MASKABLE INTERRUPT ON /INT0 The transactions caused by the Maskable Interrupt on /INT0 are different depends on the Interrupt Mode in effect at the time when the interrupt has been accepted, as described below. 6.5.1 Interrupt Mode 0 Response for Maskable Interrupt /INT0 This mode is similar to the 8080 CPU Interrupt response mode. During the Interrupt acknowledge transaction, the external I/O device being acknowledged is expected to output a vector onto the upper portion of the data bus, D15D8. The Z380 MPU interprets the vector as an instruction opcode. IEF1 and IEF2 are reset to logic 0, disabling all further maskable interrupt requests. Note that unlike the other interrupt responses, the PC is not automatically pushed onto the stack. Typically, a Restart instruction (RST) is used, since the Restart opcode is only one byte long, meaning that the interrupting peripheral needs to supply only one byte of information. For this case, it pushes the interrupted PC (Program Counter) value onto the stack and resumes execution at a fixed memory location. Alternatively, a 3-byte call to any location can be executed. Note that a Trap occurs if an undefined opcode is supplied by the I/O device as a vector. 6.5.2 Interrupt Mode 1 Response for Maskable Interrupt /INT0 In Interrupt Mode 1, the Z380 CPU automatically executes a Restart to a fixed location (00000038H) when an interrupt occurs. An Interrupt acknowledge transaction is generated, during which the data bus contents are ignored by the Z380 MPU. The interrupted PC value is pushed onto the stack. The size of the PC value pushed onto the stack is depends on Native (one word) or Extended mode (two words) in effect. The IEF1 and IEF2 are reset to logic 0 so as to disable further maskable interrupt requests. Instruction fetching and execution restarts at memory location 00000038H. DC-8297-03 6.5.3 Interrupt Mode 2 Response for Maskable Interrupt /INT0 Interrupt Mode 2 is a vectored Interrupt response mode, wherein the interrupting device identifies the starting location of service routine using an 8-bit vector read by the CPU during the Interrupt acknowledge cycle. During the Interrupt acknowledge transaction, the external I/O device being acknowledged is expected to output a vector onto the upper portion of the data bus, D15-D8. The interrupted PC value is pushed onto the stack and IEF1 and IEF2 are reset to logic 0 so as to disable further maskable interrupt requests. The size of the PC value pushed onto the stack is depends on Native (one word) or Extended mode (two words) in effect. The Z380 MPU then reads an entry from a table residing in memory and loads it into the PC to resume execution. The address of the table entry is composed of the I Extend (Iz) contents as A31-A16, the I Register contents as A15-A8 and the vector supplied by the I/O device as A7-A0. Note that the table entry is effectively the starting address of the interrupt service routine designed for the I/O device being acknowledged, and the table composing of starting addresses for all the Interrupt Mode 2 service routines can be referred to as the Interrupt Mode 2 vector table. Each table entry should be word-sized if the Z380 MPU is in the Native mode and Long Word-sized if in the Extended mode, in either case evenaligned (least significant byte with address A0 = 0), meaning 128 different vectors can be used in the Native mode, and 64 different vectors can be used in Extended mode. 6.5.4 Interrupt Mode 3 Response for Maskable Interrupt /INT0 Interrupt Mode 3 is similar to mode 2 except that a 16-bit vector is expected to be placed on the data bus D15-D0 by the I/O device during the Interrupt acknowledge transaction. The interrupted PC is pushed onto the stack. The size of the PC value pushed onto the stack depends on the 6-5 Z380TM USER'S MANUAL ZILOG 6.5.4 Interrupt Mode 3 Response for Maskable Interrupt /INT0 (Continued) Native (one word) or Extended mode (two words) in effect. IEF1 and IEF2 are reset to logic 0 so as to disable further maskable Interrupt requests. The starting address of the service routine is fetched and loaded into the PC to resume execution, from memory location with an address composed of the I Extend contents as A31-A16 and the vector supplied by the I/O device as A15-A0. Again the starting address of the service routine is word-sized if the Z380 MPU is in Native mode and Long Word-sized if in the Extended mode, in either case even-aligned, meaning 32768 different vectors can be used in the Native mode, and 16384 different vectors can be used in the Extended mode. 6.6 ASSIGNED INTERRUPT VECTORS MODE FOR MASKABLE INTERRUPTS /INT3-/INT1 Regardless of the Interrupt Mode in effect, interrupts on /INT3-/INT1 is always handled by the Assigned Interrupt Mode. This mode is similar to the interrupt handling on the Z180's /INT1 or /INT2 line. When the Z380 MPU recognizes one of the external maskable Interrupts /INT3-/INT1, it generates an Interrupt acknowledge transaction which is different than that for /INT0. The Interrupt acknowledge transaction for /INT3-/INT1 has the I/O bus signal /INTACK active, with /M1 /IORQ, /IORD, and /IOWR inactive. The interrupted PC value is pushed onto the stack. The size of the PC value pushed onto the stack is depends on the Native (one word) or Extended mode (two words) in effect. IEF1 and IEF2 are reset to logic 0, disabling further maskable Interrupt requests. The starting address of an Interrupt service routine is fetched from a table entry and loaded into the PC to resume execution. The address of the table entry is composed of the I Extend contents as A31-A16, the AB bits of the Assigned Vectors Base Register as A15-A9, and an assigned interrupt vector specific to the request being recognized as A8-A0. The assigned vectors are defined in Table 6-4. If the Z380 CPU is in Extended mode, all four bytes of the data stored in the Assigned vector location will be used as a new PC value. If the Z380 CPU is in Native mode, only two bytes of data from the LS Byte will be used as a new PC value. Table 6-4. Assigned Interrupt Vectors Interrupt Source Assigned Interrupt Vector /INT1 /INT2 /INT3 00H 04H 08H 6.7 RETI INSTRUCTION The Z80 family I/O devices are designed to monitor the Return from Interrupt opcodes in the instruction stream (RETI -- EDH, 4DH), signifying the end of the current Interrupt service routine. When detected, the daisy chain within and among the device(s) resolves and the appropri- 6-6 ate Interrupt-under-service condition clears. The Z380 MPU "reproduces" the opcode fetch transactions on the I/O bus when the RETI instruction is executed. Note that the Z380 MPU outputs the RETI opcodes onto both portions of the data bus (D15-D8 and D7-D0) in the transactions. DC-8297-03 Z380TM USER'S MANUAL ZILOG (c) 1994, 1995, 1996, 1997 by Zilog, Inc. All rights reserved. No part of this document may be copied or reproduced in any form or by any means without the prior written consent of Zilog, Inc. The information in this document is subject to change without notice. Devices sold by Zilog, Inc. are covered by warranty and patent indemnification provisions appearing in Zilog, Inc. Terms and Conditions of Sale only. ZILOG, INC. MAKES NO WARRANTY, EXPRESS, STATUTORY, IMPLIED OR BY DESCRIPTION, REGARDING THE INFORMATION SET FORTH HEREIN OR REGARDING THE FREEDOM OF THE DESCRIBED DEVICES FROM INTELLECTUAL PROPERTY INFRINGEMENT. ZILOG, INC. MAKES NO WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PURPOSE. Zilog, Inc. shall not be responsible for any errors that may appear in this document. Zilog, Inc. makes no commitment to update or keep current the information contained in this document. DC-8297-03 Zilog's products are not authorized for use as critical components in life support devices or systems unless a specific written agreement pertaining to such intended use is executed between the customer and Zilog prior to use. Life support devices or systems are those which are intended for surgical implantation into the body, or which sustains life whose failure to perform, when properly used in accordance with instructions for use provided in the labeling, can be reasonably expected to result in significant injury to the user. Zilog, Inc. 210 East Hacienda Ave. Campbell, CA 95008-6600 Telephone (408) 370-8000 Telex 910-338-7621 FAX 408 370-8056 Internet: http://www.zilog.com 6-7 USER 'S M ANUAL ZILOG USER's MANUAL CHAPTER 7 RESET 7.1 INTRODUCTION The Z380 CPU is placed in a dormant state when the /RESET input is asserted. All its operations are terminated, including any interrupt, bus request, or bus transaction that may be in progress. On the Z380 MPU, the IOCLK goes Low on the next BUSCLK rising edge and enters into the BUSCLK divided-by-eight mode. The address and data buses are tri-stated, and the bus control signals are driven to their inactive states. The effect of /RESET on the Z380 CPU and related internal I/O registers is depicted in Table 7-1. with reference to the falling edge of BUSCLK. On the Z380 MPU implementation, with the proper setup and hold times being met, IOCLK's first rising edge is 11.5 BUSCLK cycles after the /RESET deassertion, preceded by a minimum of four BUSCLK cycles when IOCLK is at Low. The /RESET input may be asynchronous to BUSCLK, though it is sampled internally at BUSCLK's falling edges. For proper initialization of the Z380 CPU, VDD must be within operating specifications and the CLK input must be stable for more than five cycles with /RESET held Low. Requirements to reset the device, and the initial state after reset might be different depending on the particular implementation of the Z380 CPU on the individual Superintegration version of the device. For /RESET effects and requirements, refer to the individual product specification. The Z380 CPU proceeds to fetch the first instruction 3.5 BUSCLK cycles after /RESET is deasserted, provided such deassertion meets the proper setup and hold times Note that if /BREQ is active when /RESET is deasserted, the Z380 MPU would relinquish the bus instead of fetching its first instruction. IOCLK synchronization would still take place as described before. USER 'S M ANUAL ZILOG Table 7-1. Effect of a Reset on Z380 CPU and Related I/O Registers Register Reset Value Comments Program Counter 00000000 PCz, PC Stack Pointer 00000000 SPz, SP I R 000000 00 Iz, I Select Register 00000000 Register Bank 0 Selected: AF, Main Bank, IX, IY Native Mode Maskable Interrupts Disabled, in Mode 0 Bus Request Lock-Off A and F Registers Register Extensions Register Banks 3-0: A, F, A', F' Unaffected 0000 Register Bank 0: BCz, DEz, HLz, IYz, BCz', DEz', HLz', IYz' (All "non-extended" portions unaffected.) Register Bank 3-1 Unaffected. I/O Bus Control Register 0 00 IOCLK = BUSCLK/8 Interrupt Enable Register 01 /INT0 Enabled Assigned Vector Base Register 00 Trap and Break Register 00 USER 'S M ANUAL ZILOG (c) 1994, 1995, 1996, 1997 by Zilog, Inc. All rights reserved. No part of this document may be copied or reproduced in any form or by any means without the prior written consent of Zilog, Inc. The information in this document is subject to change without notice. Devices sold by Zilog, Inc. are covered by warranty and patent indemnification provisions appearing in Zilog, Inc. Terms and Conditions of Sale only. ZILOG, INC. MAKES NO WARRANTY, EXPRESS, STATUTORY, IMPLIED OR BY DESCRIPTION, REGARDING THE INFORMATION SET FORTH HEREIN OR REGARDING THE FREEDOM OF THE DESCRIBED DEVICES FROM INTELLECTUAL PROPERTY INFRINGEMENT. ZILOG, INC. MAKES NO WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PURPOSE. Zilog, Inc. shall not be responsible for any errors that may appear in this document. Zilog, Inc. makes no commitment to update or keep current the information contained in this document. Zilog's products are not authorized for use as critical components in life support devices or systems unless a specific written agreement pertaining to such intended use is executed between the customer and Zilog prior to use. Life support devices or systems are those which are intended for surgical implantation into the body, or which sustains life whose failure to perform, when properly used in accordance with instructions for use provided in the labeling, can be reasonably expected to result in significant injury to the user. Zilog, Inc. 210 East Hacienda Ave. Campbell, CA 95008-6600 Telephone (408) 370-8000 Telex 910-338-7621 FAX 408 370-8056 Internet: http://www.zilog.com USER 'S M ANUAL ZILOG USER's MANUAL APPENDIX A Z380TM CPU INSTRUCTION FORMATS Four formats are used to generate the machine language bit encoding for the Z380 CPU instructions. Also, the Z380 CPU has eight Decoder Directives which work as a special escape sequence to the certain instructions, to expand its capability as explained in Chapter 3. The bit encoding of the Z380 CPU instructions are partitioned into bytes. Every instructions encoding contains one byte dedicated to specifying the type of operation to be performed; this byte is referred to as the instruction's operation code, or opcode. Besides specifying a particular operation, opcode typically include bit encoding specifying the operand addressing mode for the instruction and identifying any general purpose registers used by the instruction. Along with the opcode, instruction encoding may include bytes that contain an address, displacement, and/or immediate value used by the instruction, and special bytes called "escape codes" that determine the meaning of the opcode itself. By themselves, one byte opcode would allow the encoding of only 256 unique instructions. Therefore, special "escape codes" that precede the opcode in the instruction encoding are used to expand the number of possible instructions. There are two types of escape codes; addressing mode and opcode. Escape codes for the Z80 original instructions are one bytes in length, and the escape codes used to expand the Z380 instructions are one or two bytes in length. These instruction formats are differentiated by the opcode escape value used. Format 1 is for instructions without an opcode escape byte(s), Format 2 is for instructions with an opcode escape byte. Format 3 is for instructions whose opcode escape byte has the value 0CBH, and Format 4 is for instructions whose escape bytes are 0ED, followed by 0CBH. For the opcode escape byte, the Z380 CPU uses 0DDH and 0FDH as well, which on the Z80 CPU, these are used only as an address escape byte. In Format 2 and 4, the opcode escape byte immediately precedes the opcode byte itself. In Format 3, a 1-byte displacement may be between the opcode escape byte and opcode itself. Opcode escape bytes are used to distinguish between two different instructions with the same opcode bytes, thereby allowing more than 256 unique instructions. For example, the 01H opcode, when alone, specifies a form of a Load Register Word instruction; when proceeded by 0CBH escape code, the opcode 01H specifies a Rotate Left Circular instruction. Format 3 instructions with DDIR Immediate data Decoder Directives, 1 to 3 bytes of displacement is between the opcode escape byte and opcode itself. Format 4 instructions are proceeded by 0EDH, 0CBH, and a opcode. Optionally, with immediate word field follows. Addressing mode escape codes are used to determine the type of encoding for the addressing mode field within an instruction's opcode, and can be used in instructions with and without opcode escape value. An addressing mode escape byte can have the value of 0DDH or 0FDH. The addressing mode escape byte, if present, is always the first byte of the instruction's machine code, and is immediately followed by either the opcode (Format 1), or the opcode escape byte (Format 2 and 3). For example, the 46H opcode, when alone, specifies a Load B register from memory location pointed by (HL) register; when proceeded by the 0DDH escape byte, the opcode 46H specifies a Load B register from the memory location pointed by (IX+d). USER 'S M ANUAL ZILOG The four instruction formats are shown in Tables A-1 through A-4. Within each format, several different configurations are possible, depending on whether the instruction involves addressing mode escape bytes, addresses, displacements, or immediate data. In Table A-1 through A-4, the symbol "A.esc" is used to indicate the presence of an addressing mode escape byte, "O.esc" is used to indicate the presence of an opcode escape byte, "disp." is an abbreviation for displacement and "addr." is an abbreviation for address. Table A-1. Format 1 Instructions Encodings A.esc A.esc A.esc A.esc Instruction Format Assembly Hexadecimal Opcode Opcode Opcode Opcode Opcode Opcode Opcode Opcode LD A,C LD A,(addr) DJNZ addr LD E,n LD IX,(addr) LD A, (IX+d) LD IX,nn LD (IY+d),n 79 3A addr (L) addr (H) 10 disp 1E n DD 2A addr (L) addr (H) DD 7E disp DD 21 n(L) n(H) FD 36 d n 2-byte Address 1-byte Displacement Immediate 2-byte Address 1-byte Displacement Immediate 1-byte Displacement Immediate Note: "A.esc" is an addressing mode escape byte, and either 0DDH or 0FDH. Table A-2. Format 2 Instructions Encodings O.esc O.esc O.esc O.esc O.esc O.esc Instruction Format Assembly Hexadecimal Opcode Opcode Opcode Opcode Opcode Opcode Opcode LD A,C TST n LD (BC),nn LD BC,(addr) CALR e JR ee JR eee 79 ED 64 n ED 06 n(L) n(H) ED 4B addr (L) addr (H) ED CD e DD 18 d(L) d(H) FD 18 d(L) d(M) d(H) Immediate (1 byte) Immediate (2 bytes) Address (2 bytes) Displacement (1 byte) Displacement (2 bytes) Displacement (3 bytes) Note: "O.esc" is an opcode escape byte, and either 0DDH, 0EDH or 0FDH. Table A-3. Format 3 Instruction Encoding A.esc CB CB Opcode 1 Byte Displacement Opcode RLC (HL) RLC (IX+d) CB 06 DD CB d 06 Note: "A.esc" is an addressing mode escape byte, and either 0DDH or 0FDH. Table A-4. Format 4 Instruction Encoding ED ED CB CB Opcode Opcode Immediate RRCW BC MULTW nn ED CB 08 ED CB 97 n(L) n(H) USER 'S M ANUAL ZILOG (c) 1994, 1995, 1996, 1997 by Zilog, Inc. All rights reserved. No part of this document may be copied or reproduced in any form or by any means without the prior written consent of Zilog, Inc. The information in this document is subject to change without notice. Devices sold by Zilog, Inc. are covered by warranty and patent indemnification provisions appearing in Zilog, Inc. Terms and Conditions of Sale only. ZILOG, INC. MAKES NO WARRANTY, EXPRESS, STATUTORY, IMPLIED OR BY DESCRIPTION, REGARDING THE INFORMATION SET FORTH HEREIN OR REGARDING THE FREEDOM OF THE DESCRIBED DEVICES FROM INTELLECTUAL PROPERTY INFRINGEMENT. ZILOG, INC. MAKES NO WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PURPOSE. Zilog, Inc. shall not be responsible for any errors that may appear in this document. Zilog, Inc. makes no commitment to update or keep current the information contained in this document. Zilog's products are not authorized for use as critical components in life support devices or systems unless a specific written agreement pertaining to such intended use is executed between the customer and Zilog prior to use. Life support devices or systems are those which are intended for surgical implantation into the body, or which sustains life whose failure to perform, when properly used in accordance with instructions for use provided in the labeling, can be reasonably expected to result in significant injury to the user. Zilog, Inc. 210 East Hacienda Ave. Campbell, CA 95008-6600 Telephone (408) 370-8000 Telex 910-338-7621 FAX 408 370-8056 Internet: http://www.zilog.com USER 'S M ANUAL ZILOG USER's MANUAL APPENDIX B Z380TM INSTRUCTIONS IN ALPHABETIC ORDER This Appendix contains a quick reference guide for programming. It has the Z380 instructions sorted alphabetically. The column "Mode" indicates whether the instruction is affected by DDIR immediate Decoder Directives, Extended mode or Native mode of operation, and Word or Long Word mode of operation; "I" means the instruction can be used with DDIR IM to expand its immediate constant, "X" means that the operation of the instruction is affected by the XM status bit, and "L" means that the instruction is affected by LW status bit, or can be used with DDIR LW or DDIR W. The Native/Extended modes, Word/Long Word modes and Decoder Directives are discussed in Chapter 3 in this manual. USER 'S M ANUAL ZILOG Source Code ADC ADC ADC ADC ADC ADC ADC ADC ADC ADC ADC ADC ADC ADC ADC ADC ADC ADC ADCW ADCW ADCW ADCW ADCW ADCW ADCW ADCW ADCW ADCW ADCW ADCW ADCW ADCW ADCW ADCW ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD A,(HL) A,(IX+12H) A,(IY+12H) A,A A,B A,C A,D A,E A,H A,IXL A,IXU A,IYL A,IYU A,L HL,BC HL,DE HL,HL HL,SP (IX+12H) (IY+12H) 1234H BC DE HL HL,(IX+12H) HL,(IY+12H) HL,1234H HL,BC HL,DE HL,HL HL,IX HL,IY IX IY A,(HL) A,(IX+12H) A,(IY+12H) A,12H A,12H A,A A,B A,C A,D A,E A,H A,IXL A,IXU A,IYL A,IYU A,L HL,(1234H) HL,BC HL,DE HL,HL Mode I I I I I I I I I X X X X Object Code Source Code 8E DD FD 8F 88 89 8A 8B 8C DD DD FD FD 8D ED ED ED ED DD FD ED ED ED ED DD FD ED ED ED ED DD FD DD FD 86 DD FD C6 CE 87 80 81 82 83 84 DD DD FD FD 85 ED 09 19 29 ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADDW ADDW ADDW ADDW ADDW ADDW ADDW ADDW ADDW ADDW ADDW ADDW ADDW ADDW ADDW ADDW AND AND AND AND AND AND AND AND AND AND AND AND AND AND AND AND AND AND AND AND AND AND AND AND AND AND AND AND 8E 12 8E 12 8D 8C 8D 8C 4A 5A 6A 7A CE CE 8E 8C 8D 8F CE CE 8E 8C 8D 8F 8F 8F 8F 8F 12 12 34 12 12 12 34 12 86 12 86 12 12 12 85 84 85 84 C6 34 12 HL,SP IX,BC IX,DE IX,IX IX,SP IY,BC IY,DE IY,IY IY,SP SP,1234H (IX+12H) (IY+12H) 1234H BC DE HL HL,(IX+12H) HL,(IY+12H) HL,1234H HL,BC HL,DE HL,HL HL,IX HL,IY IX IY (HL) (IX+12H) (IY+12H) 12H A A,(HL) A,(IX+12H) A,(IY+12H) A,12H A,A A,B A,C A,D A,E A,H A,IXL A,IXU A,IYL A,IYU A,L B C D E H IXL IXU IYL Mode X X X X X X X X X I X I I I I I I I I Object Code 39 DD DD DD DD FD FD FD FD ED DD FD ED ED ED ED DD FD ED ED ED ED DD FD DD FD A6 DD FD E6 A7 A6 DD FD E6 A7 A0 A1 A2 A3 A4 DD DD FD FD A5 A0 A1 A2 A3 A4 DD DD FD 09 19 29 39 09 19 29 39 82 C6 C6 86 84 85 87 C6 C6 86 84 85 87 87 87 87 87 34 12 12 12 34 12 12 12 34 12 A6 12 A6 12 12 A6 12 A6 12 12 A5 A4 A5 A4 A5 A4 A5 USER 'S M ANUAL ZILOG Source Code AND AND ANDW ANDW ANDW ANDW ANDW ANDW ANDW ANDW ANDW ANDW ANDW ANDW ANDW ANDW ANDW ANDW BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT IYU L (IX+12H) (IY+12H) 1234H BC DE HL HL,(IX+12H) HL,(IY+12H) HL,1234H HL,BC HL,DE HL,HL HL,IX HL,IY IX IY 0,(HL) 0,(IX+12H) 0,(IY+12H) 0,A 0,B 0,C 0,D 0,E 0,H 0,L 1,(HL) 1,(IX+12H) 1,(IY+12H) 1,A 1,B 1,C 1,D 1,E 1,H 1,L 2,(HL) 2,(IX+12H) 2,(IY+12H) 2,A 2,B 2,C 2,D 2,E 2,H 2,L 3,(HL) 3,(IX+12H) 3,(IY+12H) 3,A 3,B 3,C Mode I I I I I I I I I I I I Object Code Source Code FD A5 DD FD ED ED ED ED DD FD ED ED ED ED DD FD DD FD CB DD FD CB CB CB CB CB CB CB CB DD FD CB CB CB CB CB CB CB CB DD FD CB CB CB CB CB CB CB CB DD FD CB CB CB BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BTEST CALL CALL CALL CALL CALL CALL CALL CALL CALL A4 E6 E6 A6 A4 A5 A7 E6 E6 A6 A4 A5 A7 A7 A7 A7 A7 46 CB CB 47 40 41 42 43 44 45 4E CB CB 4F 48 49 4A 4B 4C 4D 56 CB CB 57 50 51 52 53 54 55 5E CB CB 5F 58 59 12 12 34 12 12 12 34 12 12 46 12 46 12 4E 12 4E 12 56 12 56 12 5E 12 5E 3,D 3,E 3,H 3,L 4,(HL) 4,(IX+12H) 4,(IY+12H) 4,A 4,B 4,C 4,D 4,E 4,H 4,L 5,(HL) 5,(IX+12H) 5,(IY+12H) 5,A 5,B 5,C 5,D 5,E 5,H 5,L 6,(HL) 6,(IX+12H) 6,(IY+12H) 6,A 6,B 6,C 6,D 6,E 6,H 6,L 7,(HL) 7,(IX+12H) 7,(IY+12H) 7,A 7,B 7,C 7,D 7,E 7,H 7,L 1234H C,1234H M,1234H NC,1234H NZ,1234H P,1234H PE,1234H V, 1234H PO,1234H Mode I I I I I I I I I I I I I I I I I X X X X X X X X X Object Code CB CB CB CB CB DD FD CB CB CB CB CB CB CB CB DD FD CB CB CB CB CB CB CB CB DD FD CB CB CB CB CB CB CB CB DD FD CB CB CB CB CB CB CB ED CD DC FC D4 C4 F4 EC EC E4 5A 5B 5C 5D 66 CB CB 67 60 61 62 63 64 65 6E CB CB 6F 68 69 6A 6B 6C 6D 76 CB CB 77 70 71 72 73 74 75 7E CB CB 7F 78 79 7A 7B 7C 7D CF 34 34 34 34 34 34 34 34 34 12 66 12 66 12 6E 12 6E 12 76 12 76 12 7E 12 7E 12 12 12 12 12 12 12 12 12 USER 'S M ANUAL ZILOG Source Code CALL CALL CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CCF CP CP CP CP CP CP CP CP CP CP CP CP CP CP CP CP CP CP CP CP CP CP CP CP Mode NV, 1234H I Z,1234H I 123456H 1234H 12H C,123456H C,1234H C,12H M,123456H M,1234H M,12H NC,123456H NC,1234H NC,12H NZ,123456H NZ,1234H NZ,12H P,123456H P,1234H P,12H PE,123456H PE,1234H PE,12H PO,123456H PO,1234H PO,12H Z,123456H Z,1234H Z,12H (HL) (IX+12H) (IY+12H) 12H A A,(HL) A,(IX+12H) A,(IY+12H) A,12H A,A A,B A,C A,D A,E A,H A,IXL A,IXU A,IYL A,IYU A,L B C D E I I I I X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Object Code Source Code E4 CC FD DD ED FD DD ED FD DD ED FD DD ED FD DD ED FD DD ED FD DD ED FD DD ED FD DD ED 3F BE DD FD FE BF BE DD FD FE BF B8 B9 BA BB BC DD DD FD FD BD B8 B9 BA BB CP CPW CPW CP CP CP CP CP CPD CPDR CPI CPIR CPL CPL CPLW CPLW CPW CPW CPW CPW CPW CPW CPW CPW CPW CPW CPW CPW CPW CPW DAA DDIR DDIR DDIR DDIR DDIR DDIR DDIR DDIR DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC 34 34 CD CD CD DC DC DC FC FC FC D4 D4 D4 C4 C4 C4 F4 F4 F4 EC EC EC E4 E4 E4 CC CC CC 12 12 56 34 12 56 34 12 34 12 56 34 12 56 34 12 56 34 12 56 34 12 56 34 12 56 34 12 BE 12 BE 12 12 BE 12 BE 12 12 BD BC BD BC 34 12 12 34 12 12 12 34 12 12 34 12 12 34 12 12 34 12 12 34 12 12 34 12 12 Mode Object Code H HL,IX IX IXL IXU IYL IYU L X X X X A HL (IX+12H) (IY+12H) 1234H BC DE HL HL,(IX+12H) HL,(IY+12H) HL,1234H HL,BC HL,DE HL,HL HL,IY IY IB IB,LW IB,W IW IW,LW IW,W LW W (HL) (IX+12H) (IY+12H) A B BC C D DE E H HL IX IXL IXU I I I I I I X X X X BC DD DD DD DD FD FD BD ED ED ED ED 2F 2F DD DD DD FD ED ED ED ED DD FD ED ED ED ED FD FD 27 DD FD DD FD FD DD FD DD 35 DD FD 3D 05 0B 0D 15 1B 1D 25 2B DD DD DD BF BF BD BC BD BC A9 B9 A1 B1 2F 2F FE FE BE BC BD BF FE FE BE BC BD BF BF BF 12 12 34 12 12 12 34 12 C3 C1 C1 C3 C2 C2 C0 C0 35 12 35 12 2B 2D 25 USER 'S M ANUAL ZILOG Source Code DEC IY DEC IYL DEC IYU DEC L DEC SP DECW BC DECW DE DECW HL DECW IX DECW IY DECW SP DI 1FH DI DIVUW (IX+12H) I DIVUW (IY+12H) I DIVUW 1234H DIVUW BC DIVUW DE DIVUW HL DIVUW HL,(IX+12H) I DIVUW HL,(IY+12H) I DIVUW HL,1234H DIVUW HL,BC DIVUW HL,DE DIVUW HL,HL DIVUW HL,IX DIVUW HL,IY DIVUW IX DIVUW IY DJNZ 123456H DJNZ 1234H DJNZ 12H EI 1FH EI escape escape escape escape escape escape escape EX (SP),HL EX (SP),IX EX (SP),IY EX A,(HL) EX A,A EX A,A' EX A,B EX A,C EX A,D EX A,E EX A,H EX A,L EX AF,AF' EX B,B' Mode Object Code X 2B 2D 25 X X X X X X X X X X FD FD FD 2D 3B 0B 1B 2B DD FD 3B DD F3 DD FD ED ED ED ED DD FD ED ED ED ED ED ED ED ED FD DD 10 DD FB CB DD ED FD ED DD FD L E3 L DD L FD ED ED CB ED ED ED ED ED ED 08 CB 30 Source Code 2B 2B F3 1F CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB 10 10 12 FB 12 12 BF B8 B9 BB 12 12 BF B8 B9 BB BC BD BC BD 56 34 CB CB CB E3 E3 37 3F 37 07 0F 17 1F 27 2F 1F BA BA BA BA 34 12 12 EX EX EX EX EX EX EX EX EX EX EX EX EX EX EX EX EX EX EX EX EXALL EXTS EXTS EXTSW EXTSW EXX EXXX EXXY HALT IM IM IM IM IN IN IN IN IN IN IN IN IN0 IN0 IN0 IN0 IN0 IN0 IN0 IN0 INA INAW INC INC INC INC Mode Object Code BC,BC' BC,DE BC,HL BC,IX BC,IY C,C' D,D' DE,DE' DE,HL DE,IX DE,IY E,E' H,H' HL,HL' HL,IX HL,IY IX,IX' IX,IY IY,IY' L,L' L L L L L A L L L L L L L L L L L HL 0 1 2 3 A,(12H) A,(C) B,(C) C,(C) D,(C) E,(C) H,(C) L,(C) (12H) A,(12H) B,(12H) C,(12H) D,(12H) E,(12H) H,(12H) L,(12H) A,(1234H) HL,(1234H) (HL) (IX+12H) (IY+12H) A I I I I ED ED ED ED ED CB CB ED EB ED ED CB CB ED ED ED ED ED ED CB ED ED ED ED ED D9 DD FD 76 ED ED ED ED DB ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED FD 34 DD FD 3C CB 30 05 0D 03 0B 31 32 CB 31 13 1B 33 34 CB 33 33 3B CB 34 2B CB 35 35 D9 65 65 75 75 D9 D9 46 56 5E 4E 12 78 40 48 50 58 60 68 30 38 00 08 10 18 20 28 DB DB 12 12 12 12 12 12 12 12 34 12 34 12 34 34 12 12 USER 'S M ANUAL ZILOG Source Code INC B INC BC INC C INC D INC DE INC E INC H INC HL INC IX INC IXL INC IXU INC IY INC IYL INC IYU INC INC SP INCW BC INCW DE INCW HL INCW IX INCW IY INCW SP IND INDR INDRW INDW INI INIR INIRW INIW INW BC,(C) INW DE,(C) INW HL,(C) JP (HL) JP (IX) JP (IY) JP 1234H JP C,1234H JP M,1234H JP NC,1234H JP NZ,1234H JP NS,1234H JP NV,1234H JP P,1234H JP PE,1234H JP PO,1234H JP S,1234H JP V,1234H JP Z,1234H JR 123456H JR 1234H JR 12H JR C,123456H JR C,1234H Mode X X X X X L X X X X X X X I I I I I I I I I I I I I X X X X X X X X X X X X X X X X X X X X X Object Code Source Code 04 03 0C 14 13 1C 24 23 DD DD DD FD FD FD 2C 33 03 13 23 DD FD 33 ED ED ED ED ED ED ED ED DD DD DD E9 DD FD C3 DA FA D2 C2 F2 E2 F2 EA E2 FA E2 CA FD DD 18 FD DD JR JR JR JR JR JR JR JR JR JR JR LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD 23 2C 24 23 2C 24 23 23 AA BA FA EA A2 B2 F2 E2 40 50 78 E9 E9 34 34 34 34 34 34 34 34 34 34 34 34 34 18 18 12 38 38 12 12 12 12 12 12 12 12 12 12 12 12 12 56 34 12 34 12 56 34 12 34 12 C,12H NC,123456H NC,1234H NC,12H NZ,123456H NZ,1234H NZ,12H NZ,12H Z,123456H Z,1234H Z,12H (1234H),A (1234H),BC (1234H),DE (1234H),HL (1234H),HL (1234H),IX (1234H),IY (1234H),SP (BC),A (BC),BC (BC),DE (BC),HL (BC),IX (BC),IY (DE),A (DE),BC (DE),DE (DE),HL (DE),IX (DE),IY (HL),12H (HL),A (HL),B (HL),BC (HL),C (HL),D (HL),DE (HL),E (HL),H (HL),HL (HL),IX (HL),IY (HL),L (IX+12H),34H (IX+12H),A (IX+12H),B (IX+12H),BC (IX+12H),C (IX+12H),D (IX+12H),E (IX+12H),DE (IX+12H),H (IX+12H),HL Mode Object Code X X X X X X X X X X X I I I I I I I I L L L L L L L L L L L L L L L L L L L L L L I I I I I I I I I I L L L 38 FD DD 30 FD DD 20 20 FD DD 28 32 ED ED 22 ED DD FD ED 02 FD FD FD DD FD 12 FD FD FD DD FD 36 77 70 FD 71 72 FD 73 74 FD DD FD 75 DD DD DD DD DD DD DD DD DD DD 12 30 30 12 20 20 12 12 28 28 12 34 43 53 34 63 22 22 73 56 34 12 34 12 56 34 12 34 12 56 34 12 34 12 12 34 34 12 34 34 34 34 12 12 12 12 12 12 0C 1C 3C 01 01 0D 1D 3D 11 11 12 0F 1F 3F 31 31 36 77 70 CB 71 72 73 CB 74 CB 12 12 12 12 12 12 12 12 12 12 34 0B 1B 3B USER 'S M ANUAL ZILOG Source Code Mode LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD I I I I I I I I I I I I I I I I I I I I (IX+12H),IY (IX+12H),L (IY+12H),34H (IY+12H),A (IY+12H),B (IY+12H),BC (IY+12H),C (IY+12H),D (IY+12H),DE (IY+12H),E (IY+12H),H (IY+12H),HL (IY+12H),IX (IY+12H),L (SP+12H),BC (SP+12H),DE (SP+12H),HL (SP+12H),IX (SP+12H),IY A,(1234H) A,(BC) A,(DE) A,(HL) A,(IX+12H) A,(IY+12H) A,12H A,A A,B A,C A,D A,E A,H A,I A,IXL A,IXU A,IYL A,IYU A,L A,R B,(HL) B,(IX+12H) B,(IY+12H) B,12H B,A B,B B,C B,D B,E B,H B,IXL B,IXU B,IYL B,IYU B,L I I I I Object Code L L L L L L L L L L DD DD FD FD FD FD FD FD FD FD FD FD FD FD DD DD DD DD FD 3A 0A 1A 7E DD FD 3E 7F 78 79 7A 7B 7C ED DD DD FD FD 7D ED 46 DD FD 06 47 40 41 42 43 44 DD DD FD FD 45 CB 75 36 77 70 CB 71 72 CB 73 74 CB CB 75 CB CB CB CB CB 34 12 12 34 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 7E 7E 12 12 12 57 7D 7C 7D 7C 5F 46 46 12 45 44 45 44 12 12 2B 12 0B 1B 3B 2B 09 19 39 29 29 Source Code Mode LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD I BC,(1234H) BC,(BC) BC,(DE) BC,(HL) BC,(IX+12H) BC,(IY+12H) BC,(SP+12H) BC,1234H BC,BC BC,DE BC,HL BC,IX BC,IY C,(HL) C,(IX+12H) C,(IY+12H) C,12H C,A C,B C,C C,D C,E C,H C,IXL C,IXU C,IYL C,IYU C,L D,(HL) D,(IX+12H) D,(IY+12H) D,12H D,A D,B D,C D,D D,E D,H D,IXL D,IXU D,IYL D,IYU D,L DE,(1234H) DE,(BC) DE,(DE) DE,(HL) DE,(IX+12H) DE,(IY+12H) DE,(SP+12H) DE,1234H DE,BC DE,DE DE,HL I I I I Object Code L L L L L L L L L L L L L I I I I I I I I I L L L L L L L L L L L ED DD DD DD DD FD DD 01 ED DD FD DD FD 4E DD FD 0E 4F 48 49 4A 4B 4C DD DD FD FD 4D 56 DD FD 16 57 50 51 52 53 54 DD DD FD FD 55 ED DD DD DD DD FD DD 11 ED DD FD 4B 0C 0D 0F CB CB CB 34 02 02 02 0B 0B 34 12 4E 4E 12 12 12 12 03 12 03 12 01 12 4D 4C 4D 4C 56 56 12 12 12 55 54 55 54 5B 1C 1D 1F CB CB CB 34 12 12 12 34 12 12 13 12 13 12 11 12 USER 'S M ANUAL ZILOG Source Code LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD DE,IX DE,IY E,(HL) E,(IX+12H) E,(IY+12H) E,12H E,A E,B E,C E,D E,E E,H E,L E,IXL E,IYU E,IYL E,IYU H,(HL) H,(IX+12H) H,(IY+12H) H,12H H,A H,B H,C H,D H,E H,H H,L HL,(1234H) HL,(1234H) HL,(BC) HL,(DE) HL,(HL) HL,(IX+12H) HL,(IY+12H) HL,(SP+12H) HL,1234H HL,BC HL,DE HL,HL HL,I HL,IX HL,IY I,A I,HL IX,(1234H) IX,(BC) IX,(DE) IX,(HL) IX,(IY+12H) IX,(SP+12H) IX,1234H IX,BC IX,DE Mode L L I I I I I I I I I I I I I I L L L L L L L L L L L L L L L L L L L L L L L L L Object Code Source Code DD 1B FD 1B 5E DD 5E FD 5E 1E 12 5F 58 59 5A 5B 5C 5D DD 5D FD 5C DD 5D FD 5D 66 DD 66 FD 66 26 12 67 60 61 62 63 64 65 2A 34 ED 6B DD 3C DD 3D DD 3F DD CB FD CB DD CB 21 34 ED 32 DD 32 FD 32 DD 57 DD 3B FD 3B ED 47 DD 47 DD 2A DD 03 DD 13 DD 33 FD CB DD CB DD 21 DD 07 DD 17 LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD 12 12 12 12 12 34 12 12 33 12 33 12 31 12 34 12 12 23 12 21 34 12 IX,HL IX,IY IXL,12H IXL,A IXL,B IXL,C IXL,D IXL,E IXL,IXL IXL,IXU IXU,12H IXU,A IXU,B IXU,C IXU,D IXU,E IXU,IXL IXU,IXU IY,(1234H) IY,(BC) IY,(DE) IY,(HL) IY,(IX+12H) IY,(SP+12H) IY,1234H IY,BC IY,DE IY,HL IY,IX IYL,12H IYL,A IYL,B IYL,C IYL,D IYL,E IYL,IYL IYL,IYU IYU,12H IYU,A IYU,B IYU,C IYU,D IYU,E IYU,IYL IYU,IYU L,(HL) L,(IX+12H) L,(IY+12H) L,12H L,A L,B L,C L,D L,E Mode L L I I I I I I L L L L L L L L L L L Object Code DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD FD FD FD FD DD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD 6E DD FD 2E 6F 68 69 6A 6B 37 27 2E 6F 68 69 6A 6B 6D 6C 26 67 60 61 62 63 65 64 2A 03 13 33 CB CB 21 07 17 37 27 2E 6F 68 69 6A 6B 6D 6C 26 67 60 61 62 63 65 64 6E 6E 12 12 12 34 12 12 23 12 21 34 12 12 12 12 12 USER 'S M ANUAL ZILOG Source Code LD LD LD LD LD LD LD LD LDCTL LDCTL LDCTL LDCTL LDCTL LDCTL LDCTL LDCTL LDCTL LDCTL LDCTL LDCTL LDCTL LDD LDDR LDDRW LDDW LDI LDIR LDIRW LDIW LDW LDW LDW LDW LDW MLT MLT MLT MLT MTEST MULTUW MULTUW MULTUW MULTUW MULTUW MULTUW MULTUW MULTUW MULTUW MULTUW MULTUW MULTUW MULTUW MULTUW MULTUW MULTUW Mode L,H L,L R,A SP,(1234H) I SP,1234H I SP,HL SP,IX SP,IY A,DSR A,XSR A,YSR DSR,01H DSR,A HL,SR SR,01H SR,A SR,HL XSR,01H XSR,A YSR,01H YSR,A L L L L L L L L L (BC),1234H I (DE),1234H I (HL),1234H I HL,I I,HL BC DE HL SP (IX+12H) I (IY+12H) I 1234H BC DE HL HL,(IX+12H) I HL,(IY+12H) I HL,1234H HL,BC HL,DE HL,HL HL,IX HL,IY IX IY L L L L L L L Object Code Source Code 6C 6D ED ED 31 F9 DD FD ED DD FD ED ED ED DD DD ED DD DD FD FD ED ED ED ED ED ED ED ED ED ED ED DD DD ED ED ED ED DD DD FD ED ED ED ED DD FD ED ED ED ED ED ED ED ED MULTW MULTW MULTW MULTW MULTW MULTW MULTW MULTW MULTW MULTW MULTW MULTW MULTW MULTW MULTW MULTW NEG NEG NEGW NEGW NOP OR OR OR OR OR OR OR OR OR OR OR OR OR OR OR OR OR OR OR OR OR OR OR OR OR OR OR OR OR OR ORW ORW ORW ORW 4F 7B 34 F9 F9 D0 D0 D0 DA D8 C0 CA C8 C8 DA D8 DA D8 A8 B8 F8 E8 A0 B0 F0 E0 06 16 36 57 47 4C 5C 6C 7C CF CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB 34 12 12 01 01 01 01 34 12 34 12 34 12 12 12 9F 98 99 9B 12 12 9F 98 99 9B 9C 9D 9C 9D 9A 9A 9A 9A Mode (IX+12H) I (IY+12H) I 1234H BC DE HL HL,(IX+12H) I HL,(IY+12H) I HL,1234H HL,BC HL,DE HL,HL HL,IX HL,IY IX IY A HL (HL) (IX+12H) (IY+12H) 12H A A,(HL) A,(IX+12H) A,(IY+12H) A,12H A,A A,B A,C A,D A,E A,H A,IXL A,IXU A,IYL A,IYU A,L B C D E H IXL IXU IYL IYU L (IX+12H) (IY+12H) 1234H BC I I I I I I Object Code DD FD ED ED ED ED DD FD ED ED ED ED ED ED ED ED ED ED ED ED 00 B6 DD FD F6 B7 B6 DD FD F6 B7 B0 B1 B2 B3 B4 DD DD FD FD B5 B0 B1 B2 B3 B4 DD DD FD FD B5 DD FD ED ED CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB 44 44 54 54 12 12 97 90 91 93 12 12 97 90 91 93 94 95 94 95 B6 B6 12 12 12 B6 B6 12 12 12 92 92 34 12 92 92 34 12 B5 B4 B5 B4 B5 B4 B5 B4 F6 F6 B6 B4 12 12 34 12 USER 'S M ANUAL ZILOG Source Code ORW ORW ORW ORW ORW ORW ORW ORW ORW ORW ORW ORW OTDM OTDMR OTDR OTDRW OTIM OTIMR OTIR OTIRW OUT OUT OUT OUT OUT OUT OUT OUT OUT OUT0 OUT0 OUT0 OUT0 OUT0 OUT0 OUT0 OUTA OUTAW OUTD OUTDW OUTI OUTIW OUTW OUTW OUTW OUTW POP POP POP POP POP POP POP PUSH Mode DE HL HL,(IX+12H) I HL,(IY+12H) I HL,1234H HL,BC HL,DE HL,HL HL,IX HL,IY IX IY (12H),A (C),12H (C),A (C),B (C),C (C),D (C),E (C),H (C),L (12H),A (12H),B (12H),C (12H),D (12H),E (12H),H (12H),L (1234H),A (1234H),HL (C),1234H (C),BC (C),DE (C),HL AF BC DE HL IX IY SR 1234H I I I L L L L L L L L Object Code Source Code ED ED DD FD ED ED ED ED DD FD DD FD ED ED ED ED ED ED ED ED D3 ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED FD ED ED ED ED FD DD DD DD F1 C1 D1 E1 DD FD ED FD PUSH PUSH PUSH PUSH PUSH PUSH PUSH RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES B5 B7 F6 F6 B6 B4 B5 B7 B7 B7 B7 B7 8B 9B BB FB 83 93 B3 F3 12 71 79 41 49 51 59 61 69 39 01 09 11 19 21 29 D3 D3 AB EB A3 E3 79 41 51 79 12 12 34 12 12 12 12 12 12 12 12 12 34 12 34 12 34 12 E1 E1 C1 F5 34 12 AF BC DE HL IX IY SR 0,(HL) 0,(IX+12H) 0,(IY+12H) 0,A 0,B 0,C 0,D 0,E 0,H 0,L 1,(HL) 1,(IX+12H) 1,(IY+12H) 1,A 1,B 1,C 1,D 1,E 1,H 1,L 2,(HL) 2,(IX+12H) 2,(IY+12H) 2,A 2,B 2,C 2,D 2,E 2,H 2,L 3,(HL) 3,(IX+12H) 3,(IY+12H) 3,A 3,B 3,C 3,D 3,E 3,H 3,L 4,(HL) 4,(IX+12H) 4,(IY+12H) 4,A 4,B 4,C 4,D Mode Object Code L L L L L L L I I I I I I I I I I F5 C5 D5 E5 DD FD ED CB DD FD CB CB CB CB CB CB CB CB DD FD CB CB CB CB CB CB CB CB DD FD CB CB CB CB CB CB CB CB DD FD CB CB CB CB CB CB CB CB DD FD CB CB CB CB E5 E5 C5 86 CB CB 87 80 81 82 83 84 85 8E CB CB 8F 88 89 8A 8B 8C 8D 96 CB CB 97 90 91 92 93 94 95 9E CB CB 9F 98 99 9A 9B 9C 9D A6 CB CB A7 A0 A1 A2 12 86 12 86 12 8E 12 8E 12 96 12 96 12 9E 12 9E 12 A6 12 A6 USER 'S M ANUAL ZILOG Source Code RES 4,E RES 4,H RES 4,L RES 5,(HL) RES 5,(IX+12H) RES 5,(IY+12H) RES 5,A RES 5,B RES 5,C RES 5,D RES 5,E RES 5,H RES 5,L RES 6,(HL) RES 6,(IX+12H) RES 6,(IY+12H) RES 6,A RES 6,B RES 6,C RES 6,D RES 6,E RES 6,H RES 6,L RES 7,(HL) RES 7,(IX+12H) RES 7,(IY+12H) RES 7,A RES 7,B RES 7,C RES 7,D RES 7,E RES 7,H RES 7,L RESC LCK RESC LW reserved RET C RET M RET NC RET NS RET NV RET NZ RET P RET PE RET PO RET S RET V RET Z RET RETI RETN RL (HL) RL (IX+12H) RL (IY+12H) Mode I I I I I I X X X X X X X X X X X X X X X I I Object Code Source Code CB CB CB CB DD FD CB CB CB CB CB CB CB CB DD FD CB CB CB CB CB CB CB CB DD FD CB CB CB CB CB CB CB ED DD ED D8 F8 D0 F0 E0 C0 F0 E8 E0 F8 E8 C8 C9 ED ED CB DD FD RL RL RL RL RL RL RL RLA RLC RLC RLC RLC RLC RLC RLC RLC RLC RLC RLCA RLCW RLCW RLCW RLCW RLCW RLCW RLCW RLCW RLD RLW RLW RLW RLW RLW RLW RLW RLW RR RR RR RR RR RR RR RR RR RR RRA RRC RRC RRC RRC RRC RRC RRC RRC A3 A4 A5 AE CB CB AF A8 A9 AA AB AC AD B6 CB CB B7 B0 B1 B2 B3 B4 B5 BE CB CB BF B8 B9 BA BB BC BD FF FF 55 12 AE 12 AE 12 B6 12 B6 12 BE 12 BE 4D 45 16 CB 12 16 CB 12 16 Mode A B C D E H L (HL) (IX+12H) (IY+12H) A B C D E H L (HL) (IX+12H) (IY+12H) BC DE HL IX IY (HL) (IX+12H) (IY+12H) BC DE HL IX IY (HL) (IX+12H) (IY+12H) A B C D E H L (HL) (IX+12H) (IY+12H) A B C D E I I I I I I I I I I Object Code CB CB CB CB CB CB CB 17 CB DD FD CB CB CB CB CB CB CB 07 ED DD FD ED ED ED ED ED ED ED DD FD ED ED ED ED ED CB DD FD CB CB CB CB CB CB CB 1F CB DD FD CB CB CB CB CB 17 10 11 12 13 14 15 06 CB 12 06 CB 12 06 07 00 01 02 03 04 05 CB CB CB CB CB CB CB CB 6F CB CB CB CB CB CB CB CB 1E CB CB 1F 18 19 1A 1B 1C 1D 02 12 02 12 02 00 01 03 04 05 12 12 12 12 12 10 11 13 14 15 12 1E 12 1E 0E CB 12 0E CB 12 0E 0F 08 09 0A 0B USER 'S M ANUAL ZILOG Source Code RRC RRC RRCA RRCW RRCW RRCW RRCW RRCW RRCW RRCW RRCW RRD RRW RRW RRW RRW RRW RRW RRW RRW RST RST RST RST RST RST RST RST SBC SBC SBC SBC SBC SBC SBC SBC SBC SBC SBC SBC SBC SBC SBC SBC SBC SBC SBC SBCW SBCW SBCW SBCW SBCW SBCW SBCW Mode H L (HL) (IX+12H) (IY+12H) BC DE HL IX IY I I (HL) (IX+12H) I (IY+12H) I BC DE HL IX IY 00H 08H 10H 18H 20H 28H 30H 38H A,(HL) A,(IX+12H) I A,(IY+12H) I A,12H A,A A,B A,C A,D A,E A,H A,IXL A,IXU A,IYL A,IYU A,L HL,BC HL,DE HL,HL HL,SP (IX+12H) I (IY+12H) I 1234H BC DE HL HL,(IX+12H) X X X X X X X X Object Code Source Code CB CB 0F ED DD FD ED ED ED ED ED ED ED DD FD ED ED ED ED ED C7 CF D7 DF E7 EF F7 FF 9E DD FD DE 9F 98 99 9A 9B 9C DD DD FD FD 9D ED ED ED ED DD FD ED ED ED ED DD SBCW SBCW SBCW SBCW SBCW SBCW SBCW SBCW SBCW SCF SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET 0C 0D CB CB CB CB CB CB CB CB 67 CB CB CB CB CB CB CB CB 9E 9E 12 0A 12 0A 12 0A 08 09 0B 0C 0D 1A 12 1A 12 1A 18 19 1B 1C 1D 12 12 9D 9C 9D 9C 42 52 62 72 DE DE 9E 9C 9D 9F DE 12 12 34 12 12 Mode HL,(IY+12H) HL,1234H HL,BC HL,DE HL,HL HL,IX HL,IY IX IY 0,(HL) 0,(IX+12H) 0,(IY+12H) 0,A 0,B 0,C 0,D 0,E 0,H 0,L 1,(HL) 1,(IX+12H) 1,(IY+12H) 1,A 1,B 1,C 1,D 1,E 1,H 1,L 2,(HL) 2,(IX+12H) 2,(IY+12H) 2,A 2,B 2,C 2,D 2,E 2,H 2,L 3,(HL) 3,(IX+12H) 3,(IY+12H) 3,A 3,B 3,C 3,D 3,E 3,H 3,L 4,(HL) 4,(IX+12H) 4,(IY+12H) 4,A I I I I I I I I I I Object Code FD ED ED ED ED DD FD DD FD 37 CB DD FD CB CB CB CB CB CB CB CB DD FD CB CB CB CB CB CB CB CB DD FD CB CB CB CB CB CB CB CB DD FD CB CB CB CB CB CB CB CB DD FD CB DE 12 9E 34 12 9C 9D 9F 9F 9F 9F 9F C6 CB CB C7 C0 C1 C2 C3 C4 C5 CE CB CB CF C8 C9 CA CB CC CD D6 CB CB D7 D0 D1 D2 D3 D4 D5 DE CB CB DF D8 D9 DA DB DC DD E6 CB CB E7 12 C6 12 C6 12 CE 12 CE 12 D6 12 D6 12 DE 12 DE 12 E6 12 E6 USER 'S M ANUAL ZILOG Source Code SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SETC SETC SETC SLA SLA SLA SLA SLA SLA SLA SLA SLA SLA SLAW SLAW SLAW SLAW SLAW 4,B 4,C 4,D 4,E 4,H 4,L 5,(HL) 5,(IX+12H) 5,(IY+12H) 5,A 5,B 5,C 5,D 5,E 5,H 5,L 6,(HL) 6,(IX+12H) 6,(IY+12H) 6,A 6,B 6,C 6,D 6,E 6,H 6,L 7,(HL) 7,(IX+12H) 7,(IY+12H) 7,A 7,B 7,C 7,D 7,E 7,H 7,L LCK LW XM (HL) (IX+12H) (IY+12H) A B C D E H L (HL) (IX+12H) (IY+12H) BC DE Mode I I I I I I I I I I Object Code Source Code CB CB CB CB CB CB CB DD FD CB CB CB CB CB CB CB CB DD FD CB CB CB CB CB CB CB CB DD FD CB CB CB CB CB CB CB ED DD FD CB DD FD CB CB CB CB CB CB CB ED DD FD ED ED SLAW SLAW SLAW SLP SRA SRA SRA SRA SRA SRA SRA SRA SRA SRA SRAW SRAW SRAW SRAW SRAW SRAW SRAW SRAW SRL SRL SRL SRL SRL SRL SRL SRL SRL SRL SRLW SRLW SRLW SRLW SRLW SRLW SRLW SRLW SUB SUB SUB SUB SUB SUB SUB SUB SUB SUB SUB SUB SUB SUB E0 E1 E2 E3 E4 E5 EE CB CB EF E8 E9 EA EB EC ED F6 CB CB F7 F0 F1 F2 F3 F4 F5 FE CB CB FF F8 F9 FA FB FC FD F7 F7 F7 26 CB CB 27 20 21 22 23 24 25 CB CB CB CB CB 12 EE 12 EE 12 F6 12 F6 12 FE 12 FE 12 26 12 26 22 12 22 12 22 20 21 Mode HL IX IY (HL) (IX+12H) (IY+12H) A B C D E H L (HL) (IX+12H) (IY+12H) BC DE HL IX IY (HL) (IX+12H) (IY+12H) A B C D E H L (HL) (IX+12H) (IY+12H) BC DE HL IX IY A,(HL) A,12H A,A A,(IX+12H) A,(IY+12H) 12H A,B A,C A,D A,E A,H A,IXL A,IXU A,IYL I I I I I I I I I I Object Code ED ED ED ED CB DD FD CB CB CB CB CB CB CB ED DD FD ED ED ED ED ED CB DD FD CB CB CB CB CB CB CB ED DD FD ED ED ED ED ED 96 D6 97 DD FD D6 90 91 92 93 94 DD DD FD CB CB CB 76 2E CB CB 2F 28 29 2A 2B 2C 2D CB CB CB CB CB CB CB CB 3E CB CB 3F 38 39 3A 3B 3C 3D CB CB CB CB CB CB CB CB 23 24 25 12 2E 12 2E 2A 12 2A 12 2A 28 29 2B 2C 2D 12 3E 12 3E 3A 12 3A 12 3A 38 39 3B 3C 3D 12 96 96 12 95 94 95 12 12 USER 'S M ANUAL ZILOG Source Code Mode SUB A,IYU SUB A,L HL,(1234H) I SUB SP,1234H I SUBW (IX+12H) SUBW (IY+12H) SUBW 1234H SUBW BC SUBW DE SUBW HL SUBW HL,(IX+12H) I SUBW HL,(IY+12H) I SUBW HL,1234H SUBW HL,BC SUBW HL,DE SUBW HL,HL SUBW HL,IX SUBW HL,IY SUBW IX SUBW IY SWAP BC SWAP DE SWAP HL SWAP IX SWAP IY TST (HL) TST 12H TST A TST B TST C TST D TST E TST H TST L TSTIO 12H XOR (HL) XOR (IX+12H) I XOR (IY+12H) I XOR 12H XOR A XOR A,(HL) XOR A,(IX+12H) I XOR A,(IY+12H) I XOR A,12H XOR A,A XOR A,B XOR A,C XOR A,D XOR A,E XOR A,H XOR A,IXL XOR A,IXU X X Object Code Source Code FD 95 ED ED DD FD ED ED ED ED DD FD ED ED ED ED DD FD DD FD ED ED ED DD FD ED ED ED ED ED ED ED ED ED ED AE DD FD EE AF AE DD FD EE AF A8 A9 AA AB AC DD DD XOR XOR XOR XOR XOR XOR XOR XOR XOR XOR XOR XOR XOR XORW XORW XORW XORW XORW XORW XORW XORW XORW XORW XORW XORW XORW XORW XORW XORW 94 SUB D6 34 12 92 34 12 D6 12 D6 12 96 34 12 94 95 97 D6 12 D6 12 96 34 12 94 95 97 97 97 97 97 0E 1E 3E 3E 3E 34 64 12 3C 04 0C 14 1C 24 2C 74 12 AE 12 AE 12 12 AE 12 AE 12 12 AD AC Mode A,IYL A,IYU A,L B C D E H IXL IXU IYL IYU L (IX+12H) I (IY+12H) I 1234H BC DE HL HL,(IX+12H) I HL,(IY+12H) I HL,1234H HL,BC HL,DE HL,HL HL,IX HL,IY IX IY Object Code FD FD AD A8 A9 AA AB AC DD DD FD FD AD DD FD ED ED ED ED DD FD ED ED ED ED DD FD DD FD AD AC AD AC AD AC EE EE AE AC AD AF EE EE AE AC AD AF AF AF AF AF 12 12 34 12 12 12 34 12 USER 'S M ANUAL ZILOG (c) 1994, 1995, 1996, 1997 by Zilog, Inc. All rights reserved. No part of this document may be copied or reproduced in any form or by any means without the prior written consent of Zilog, Inc. The information in this document is subject to change without notice. Devices sold by Zilog, Inc. are covered by warranty and patent indemnification provisions appearing in Zilog, Inc. Terms and Conditions of Sale only. ZILOG, INC. MAKES NO WARRANTY, EXPRESS, STATUTORY, IMPLIED OR BY DESCRIPTION, REGARDING THE INFORMATION SET FORTH HEREIN OR REGARDING THE FREEDOM OF THE DESCRIBED DEVICES FROM INTELLECTUAL PROPERTY INFRINGEMENT. ZILOG, INC. MAKES NO WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PURPOSE. Zilog, Inc. shall not be responsible for any errors that may appear in this document. Zilog, Inc. makes no commitment to update or keep current the information contained in this document. Zilog's products are not authorized for use as critical components in life support devices or systems unless a specific written agreement pertaining to such intended use is executed between the customer and Zilog prior to use. Life support devices or systems are those which are intended for surgical implantation into the body, or which sustains life whose failure to perform, when properly used in accordance with instructions for use provided in the labeling, can be reasonably expected to result in significant injury to the user. Zilog, Inc. 210 East Hacienda Ave. Campbell, CA 95008-6600 Telephone (408) 370-8000 Telex 910-338-7621 FAX 408 370-8056 Internet: http://www.zilog.com USER 'S M ANUAL ZILOG USER's MANUAL APPENDIX C Z380TM INSTRUCTION IN NUMERIC ORDER The following Appendix has the Z380 instructions sorted by numeric order. The column "Mode" indicates whether the instruction is affected by DDIR immediate Decoder Directives, Extended mode or Native mode of operation, and Word or Long Word Mode of operation; "I" means the instruction can be used with DDIR IM to expand its immediate constant, "X" means that the operation of the instruction is affected by the XM status bit, and "L" means that the instruction is affected by LW status bit, or can be used with DDIR LW or DDIR W. The Native/Extended modes, Word/Long Word modes and Decoder Directives are discussed in Chapter 3 in this manual. USER 'S M ANUAL ZILOG Object Code Source Code 00 01 02 03 03 04 05 06 07 08 09 0A 0B 0B 0C 0D 0E 0F 10 11 12 13 13 14 15 16 17 18 19 1A 1B 1B 1C 1D 1E 1F 20 21 22 23 23 24 25 26 27 28 29 2A 2B 2B 2C 2D 2E 2F NOP LD LD INC INCW INC DEC LD RLCA EX ADD LD DEC DECW INC DEC LD RRCA DJNZ LD LD INC INCW INC DEC LD RLA JR ADD LD DEC DECW INC DEC LD RRA JR LD LD INC INCW INC DEC LD DAA JR ADD LD DEC DECW INC DEC LD CPL 34 12 12 12 12 34 12 12 12 12 12 34 12 34 12 12 12 34 12 12 BC,1234H (BC),A BC BC B B B,12H Mode I X X AF,AF' HL,BC A,(BC) BC BC C C C,12H 12H DE,1234H (DE),A DE DE D D D,12H X X X X I Z,12H HL,HL HL,(1234H) HL HL L L L,12H A L X X 12H HL,DE A,(DE) DE DE E E E,12H NZ,12H HL,1234H (1234H),HL HL HL H H H,12H L X X X X X I I L L X X X X I L X X Object Code Source Code 2F 30 31 32 33 33 34 35 36 37 38 39 3A 3B 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 CPL JR LD LD INC INCW INC DEC LD SCF JR ADD LD DEC DECW INC DEC LD CCF LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD 12 34 12 34 12 12 12 34 12 12 NC,12H SP,1234H (1234H),A SP SP (HL) (HL) (HL),12H C,12H HL,SP A,(1234H) SP SP A A A,12H B,B B,C B,D B,E B,H B,L B,(HL) B,A C,B C,C C,D C,E C,H C,L C,(HL) C,A D,B D,C D,D D,E D,H D,L D,(HL) D,A E,B E,C E,D E,E E,H E,L E,(HL) E,A H,B H,C H,D Mode X I I L X X X X I X X USER 'S M ANUAL ZILOG Object Code Source Code 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD HALT LD LD LD LD LD LD LD LD LD ADD ADD ADD ADD ADD ADD ADD ADD ADC ADC ADC ADC ADC ADC ADC ADC SUB SUB SUB SUB SUB SUB SUB SUB SBC H,E H,H H,L H,(HL) H,A L,B L,C L,D L,E L,H L,L L,(HL) L,A (HL),B (HL),C (HL),D (HL),E (HL),H (HL),L (HL),A A,B A,C A,D A,E A,H A,L A,(HL) A,A A,B A,C A,D A,E A,H A,L A,(HL) A,A A,B A,C A,D A,E A,H A,L A,(HL) A,A A,B A,C A,D A,E A,H A,L A,(HL) A,A A,B Mode Object Code Source Code 99 9A 9B 9C 9D 9E 9F A0 A0 A1 A1 A2 A2 A3 A3 A4 A4 A5 A5 A6 A6 A7 A7 A8 A8 A9 A9 AA AA AB AB AC AC AD AD AE AE AF AF B0 B0 B1 B1 B2 B2 B3 B3 B4 B4 B5 B5 B6 B6 B7 SBC SBC SBC SBC SBC SBC SBC AND AND AND AND AND AND AND AND AND AND AND AND AND AND AND AND XOR XOR XOR XOR XOR XOR XOR XOR XOR XOR XOR XOR XOR XOR XOR XOR OR OR OR OR OR OR OR OR OR OR OR OR OR OR OR A,C A,D A,E A,H A,L A,(HL) A,A A,B B A,C C A,D D A,E E A,H H A,L L (HL) A,(HL) A A,A A,B B A,C C A,D D A,E E A,H H A,L L (HL) A,(HL) A A,A A,B B A,C C A,D D A,E E A,H H A,L L (HL) A,(HL) A Mode USER 'S M ANUAL ZILOG Object Code Source Code B7 B8 B8 B9 B9 BA BA BB BB BC BC BD BD BE BE BF BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB OR CP CP CP CP CP CP CP CP CP CP CP CP CP CP CP CP RET POP JP JP CALL PUSH ADD RST RET RET JP RLC RLC RLC RLC RLC RLC RLC RLC RRC RRC RRC RRC RRC RRC RRC RRC RL RL RL RL RL RL RL RL RR RR 34 12 34 12 34 12 12 34 12 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 A,A A,B B A,C C A,D D A,E E A,H H A,L L (HL) A,(HL) A A,A NZ BC NZ,1234H 1234H NZ,1234H BC A,12H 00H Z Z,1234H B C D E H L (HL) A B C D E H L (HL) A B C D E H L (HL) A B C Mode X L I I I X X X L I X X X X Object Code Source Code CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB RR RR RR RR RR RR SLA SLA SLA SLA SLA SLA SLA SLA SRA SRA SRA SRA SRA SRA SRA SRA EX EX EX EX EX EX EX SRL SRL SRL SRL SRL SRL SRL SRL BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 D E H L (HL) A B C D E H L (HL) A B C D E H L (HL) A B,B' C,C' D,D' E,E' H,H' L,L' A,A' B C D E H L (HL) A 0,B 0,C 0,D 0,E 0,H 0,L 0,(HL) 0,A 1,B 1,C 1,D 1,E 1,H 1,L 1,(HL) 1,A 2,B Mode USER 'S M ANUAL ZILOG Object Code Source Code CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT RES RES RES RES RES RES RES 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 2,C 2,D 2,E 2,H 2,L 2,(HL) 2,A 3,B 3,C 3,D 3,E 3,H 3,L 3,(HL) 3,A 4,B 4,C 4,D 4,E 4,H 4,L 4,(HL) 4,A 5,B 5,C 5,D 5,E 5,H 5,L 5,(HL) 5,A 6,B 6,C 6,D 6,E 6,H 6,L 6,(HL) 6,A 7,B 7,C 7,D 7,E 7,H 7,L 7,(HL) 7,A 0,B 0,C 0,D 0,E 0,H 0,L 0,(HL) Mode Object Code Source Code CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC 0,A 1,B 1,C 1,D 1,E 1,H 1,L 1,(HL) 1,A 2,B 2,C 2,D 2,E 2,H 2,L 2,(HL) 2,A 3,B 3,C 3,D 3,E 3,H 3,L 3,(HL) 3,A 4,B 4,C 4,D 4,E 4,H 4,L 4,(HL) 4,A 5,B 5,C 5,D 5,E 5,H 5,L 5,(HL) 5,A 6,B 6,C 6,D 6,E 6,H 6,L 6,(HL) 6,A 7,B 7,C 7,D 7,E 7,H Mode USER 'S M ANUAL ZILOG Object Code Source Code CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB RES RES RES SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 7,L 7,(HL) 7,A 0,B 0,C 0,D 0,E 0,H 0,L 0,(HL) 0,A 1,B 1,C 1,D 1,E 1,H 1,L 1,(HL) 1,A 2,B 2,C 2,D 2,E 2,H 2,L 2,(HL) 2,A 3,B 3,C 3,D 3,E 3,H 3,L 3,(HL) 3,A 4,B 4,C 4,D 4,E 4,H 4,L 4,(HL) 4,A 5,B 5,C 5,D 5,E 5,H 5,L 5,(HL) 5,A 6,B 6,C 6,D Mode Object Code Source Code CB CB CB CB CB CB CB CB CB CB CB CB CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D6 D7 D8 D9 DA DB DC DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD SET SET SET SET SET SET SET SET SET SET SET SET SET CALL CALL ADD RST RET POP JP OUT CALL PUSH SUB SUB RST RET EXX JP IN CALL LD LD LD LD ADD LD LD LD LD DJNZ LD LD LD LD JR ADD LD LD LD LD JR LD LD F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF 34 12 34 12 12 34 12 12 34 12 12 12 34 12 34 01 02 03 07 09 0B 0C 0D 0F 10 11 12 13 17 18 19 1B 1C 1D 1F 20 21 22 12 12 34 12 34 12 34 12 34 12 34 12 6,E 6,H 6,L 6,(HL) 6,A 7,B 7,C 7,D 7,E 7,H 7,L 7,(HL) 7,A Z,1234H 1234H A,12H 08H NC DE NC,1234H (12H),A NC,1234H DE 12H A,12H 10H C C,1234H A,(12H) C,1234H (BC),IX BC,DE IX,(BC) IX,BC IX,BC BC,IX BC,(BC) BC,(DE) BC,(HL) 1234H (DE),IX DE,DE IX,(DE) IX,DE 1234H IX,DE DE,IX DE,(BC) DE,(DE) DE,(HL) NZ,1234H IX,1234H (1234H),IX Mode I I X X X X L I X I X L X X I X I X L L L L X L L L L X L L L L X X L L L L X I I L L USER 'S M ANUAL ZILOG Object Code Source Code DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD INC INCW INC DEC LD LD JR ADD LD DEC DECW INC DEC LD CPLW CPLW JR LD LD LD INC DEC LD LD JR ADD LD LD LD SWAP LD INW OUTW LD LD LD LD LDW LD LD LD INW OUTW LD LD LD LD LDW LD LD LD LD LD LD 23 23 24 25 26 27 28 29 2A 2B 2B 2C 2D 2E 2F 2F 30 31 32 33 34 35 36 37 38 39 3B 3C 3D 3E 3F 40 41 44 45 46 47 47 4C 4D 4E 50 51 54 55 56 57 57 5D 5D 5E 60 61 62 12 34 12 34 12 12 34 12 12 12 12 34 34 12 12 12 12 12 IX IX IXU IXU IXU,12H IX,IY Z,1234H IX,IX IX,(1234H) IX IX IXL IXL IXL,12H HL NC,1234H (HL),IX HL,DE IX,(HL) (IX+12H) (IX+12H) (IX+12H),34H IX,HL C,1234H IX,SP HL,IX HL,(BC) HL,(DE) IX HL,(HL) BC,(C) (C),BC B,IXU B,IXL B,(IX+12H) I,HL I,HL C,IXU C,IXL C,(IX+12H) DE,(C) (C),DE D,IXU D,IXL D,(IX+12H) HL,I HL,I E,IXL E,IYL E,(IX+12H) IXU,B IXU,C IXU,D Mode X X L X X I L X X X L L L I I I L X X L L L L I L L I I L L I Object Code Source Code DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD INW OUTW LD LD LD ADD ADD ADD ADDW ADDW ADC ADC ADC ADCW ADCW SUB SUB SUB SUBW SUBW SBC SBC SBC SBCW SBCW AND AND AND AND AND AND ANDW ANDW XOR 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 77 78 79 7C 7D 7E 84 85 86 87 87 8C 8D 8E 8F 8F 94 95 96 97 97 9C 9D 9E 9F 9F A4 A4 A5 A5 A6 A6 A7 A7 AC 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 IXU,E IXU,IXU IXU,IXL H,(IX+12H) IXU,A IXL,B IXL,C IXL,D IXL,E IXL,IXU IXL,IXL L,(IX+12H) IXL,A (IX+12H),B (IX+12H),C (IX+12H),D (IX+12H),E (IX+12H),H (IX+12H),L (IX+12H),A HL,(C) (C),HL A,IXU A,IXL A,(IX+12H) A,IXU A,IXL A,(IX+12H) HL,IX IX A,IXU A,IXL A,(IX+12H) HL,IX IX A,IXU A,IXL A,(IX+12H) HL,IX IX A,IXU A,IXL A,(IX+12H) HL,IX IX A,IXU IXU A,IXL IXL (IX+12H) A,(IX+12H) HL,IX IX A,IXU Mode I I I I I I I I I I I I I I I I USER 'S M ANUAL ZILOG Object Code Source Code DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD XOR XOR XOR XOR XOR XORW XORW OR OR OR OR OR OR ORW ORW CP CP CP CP CP CP CPW CPW DDIR DDIR DDIR DDIR CALR ADDW ADDW LDCTL LDCTL LD RLCW LD RLC LD RRCW LD RRC LD RLW LD RL LD RRW LD RR LD SLAW LD SLA LD SRAW AC AD AD AE AE AF AF B4 B4 B5 B5 B6 B6 B7 B7 BC BC BD BD BE BE BF BF C0 C1 C2 C3 C4 C6 C6 C8 CA CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB 12 12 12 12 12 12 34 12 12 12 01 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 01 02 03 06 09 0A 0B 0E 11 12 13 16 19 1A 1B 1E 21 22 23 26 29 2A IXU A,IXL IXL (IX+12H) A,(IX+12H) HL,IX IX A,IXU IXU A,IXL IXL (IX+12H) A,(IX+12H) HL,IX IX A,IXU IXU A,IXL IXL (IX+12H) A,(IX+12H) HL,IX IX W IB,W IW,W IB NZ,1234H (IX+12H) HL,(IX+12H) SR,A SR,01H BC,(SP+12H) (IX+12H) BC,(IX+12H) (IX+12H) (SP+12H),BC (IX+12H) (IX+12H),BC (IX+12H) DE,(SP+12H) (IX+12H) DE,(IX+12H) (IX+12H) (SP+12H),DE (IX+12H) (IX+12H),DE (IX+12H) IX,(SP+12H) (IX+12H) IY,(IX+12H) (IX+12H) (SP+12H),IX (IX+12H) Mode I I I I I I X I I I I I I I I I I I I I I I I I I I I I I I I L L L L L L L L L L L Object Code Source Code Mode DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD LD SRA LD LD LD SRLW LD SRL BIT BIT BIT BIT BIT BIT BIT BIT RES RES MULTW MULTW RES MULTUW MULTUW RES RES RES RES DIVUW DIVUW RES SET SET SET SET SET SET SET SET CALR CALR ADCW ADCW MTEST LDCTL CALR SUBW SUBW LDCTL EXXX LDCTL CALR SBCW SBCW POP I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CC CD CE CE CF D0 D4 D6 D6 D8 D9 DA DC DE DE E1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 34 34 12 12 2B 2E 31 33 39 3A 3B 3E 46 4E 56 5E 66 6E 76 7E 86 8E 92 92 96 9A 9A 9E A6 AE B6 BA BA BE C6 CE D6 DE E6 EE F6 FE 12 12 34 12 12 12 01 34 12 12 12 (IX+12H),IY (IX+12H) HL,(SP+12H) HL,(IX+12H) (SP+12H),HL (IX+12H) (IX+12H),HL (IX+12H) 0,(IX+12H) 1,(IX+12H) 2,(IX+12H) 3,(IX+12H) 4,(IX+12H) 5,(IX+12H) 6,(IX+12H) 7,(IX+12H) 0,(IX+12H) 1,(IX+12H) (IX+12H) HL,(IX+12H) 2,(IX+12H) (IX+12H) HL,(IX+12H) 3,(IX+12H) 4,(IX+12H) 5,(IX+12H) 6,(IX+12H) (IX+12H) HL,(IX+12H) 7,(IX+12H) 0,(IX+12H) 1,(IX+12H) 2,(IX+12H) 3,(IX+12H) 4,(IX+12H) 5,(IX+12H) 6,(IX+12H) 7,(IX+12H) Z,1234H 1234H (IX+12H) HL,(IX+12H) A,XSR NC,1234H (IX+12H) HL,(IX+12H) XSR,A XSR,01H C,1234H (IX+12H) HL,(IX+12H) IX L L L L L X X I I X I X I L USER 'S M ANUAL ZILOG Object Code Source Code DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DE DF E0 E0 E1 E2 E2 E3 E4 E4 E5 E6 E6 E7 E8 E8 E9 EA EA EB EC EC ED ED ED ED ED ED ED ED ED ED ED ED ED ED EX CALR PUSH ANDW ANDW JP CALR XORW XORW DI CALR ORW ORW SETC LD EI CALR CPW CPW RESC SBC RST RET RET POP JP JP EX CALL CALL PUSH AND AND RST RET RET JP JP JP EX CALL CALL IN0 OUT0 LD EX TST EX LDW EX IN0 OUT0 EX TST EX SWAP E3 E4 E5 E6 E6 E9 EC EE EE F3 F4 F6 F6 F7 F9 FB FC FE FE FF 12 34 12 12 12 34 12 12 12 1F 34 12 12 12 1F 34 12 12 12 34 12 34 12 34 12 34 12 12 12 34 12 34 12 34 34 00 01 02 03 04 05 06 07 08 09 0B 0C 0D 0E 12 12 12 12 34 12 12 12 (SP),IX PO,1234H IX (IX+12H) HL,(IX+12H) (IX) PE,1234H (IX+12H) HL,(IX+12H) 1FH P,1234H (IX+12H) HL,(IX+12H) LW SP,IX 1FH M,1234H (IX+12H) HL,(IX+12H) LW A,12H 18H NV PO HL NV,1234H PO,1234H (SP),HL NV, 1234H PO,1234H HL 12H A,12H 20H PE V (HL) PE,1234H V,1234H DE,HL V, 1234H PE,1234H B,(12H) (12H),B BC,BC BC,IX B BC,DE (BC),1234H A,B C,(12H) (12H),C BC,IY C BC,HL BC Mode L X L I I X X I I X I I L X I I X X X L I I X X I I X X L L I I X X X X X X L I I X X L L I L L L L Object Code Source Code ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED EX IN0 OUT0 LD EX TST LDW EX IN0 OUT0 EX TST SWAP EX IN0 OUT0 TST EX IN0 OUT0 EX TST EX IN0 LD EX TST LDW EX IN0 OUT0 EX TST SWAP EX IN OUT SBC LD NEG NEG RETN IM LD IN OUT ADC LD MLT RETI IM LD IN OUT 0F 10 11 12 13 14 16 17 18 19 1B 1C 1E 1F 20 21 24 27 28 29 2B 2C 2F 30 32 33 34 36 37 38 39 3B 3C 3E 3F 40 41 42 43 44 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 12 12 34 12 12 12 12 12 12 12 12 34 12 12 12 34 12 34 12 A,C D,(12H) (12H),D DE,BC DE,IX D (DE),1234H A,D E,(12H) (12H),E DE,IY E DE A,E H,(12H) (12H),H H A,H L,(12H) (12H),L IX,IY L A,L (12H) HL,BC HL,IX (HL) (HL),1234H A,(HL) A,(12H) (12H),A HL,IY A HL A,A B,(C) (C),B HL,BC (1234H),BC A Mode L L I L L L L L I L L I L X 0 I,A C,(C) (C),C HL,BC BC,(1234H) BC I L X 3 R,A D,(C) (C),D USER 'S M ANUAL ZILOG Object Code Source Code ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED SBC HL,DE LD (1234H),DE NEGW HL NEGW reserved IM 1 LD A,I IN E,(C) OUT (C),E ADC HL,DE LD DE,(1234H) MLT DE IM 2 LD A,R IN H,(C) OUT (C),H SBC HL,HL LD (1234H),HL TST 12H EXTS A EXTS RRD IN L,(C) OUT (C),L ADC HL,HL LD HL,(1234H) MLT HL RLD OUT (C),12H SBC HL,SP LD (1234H),SP TSTIO 12H EXTSW HL EXTSW SLP IN A,(C) OUT (C),A ADC HL,SP LD SP,(1234H) MLT SP ADD SP,1234H OTIM ADDW BC ADDW HL,BC ADDW DE ADDW HL,DE ADDW 1234H ADDW HL,1234H ADDW HL ADDW HL,HL OTDM ADCW BC ADCW HL,BC ADCW DE 52 53 54 54 55 56 57 58 59 5A 5B 5C 5E 5F 60 61 62 63 64 65 65 67 68 69 6A 6B 6C 6F 71 72 73 74 75 75 76 78 79 7A 7B 7C 82 83 84 84 85 85 86 86 87 87 8B 8C 8C 8D 34 12 34 12 34 12 12 34 12 12 34 12 12 34 12 34 12 34 12 34 12 Mode I L I L I L L L I L I L I I L X Object Code Source Code ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ADCW HL,DE ADCW 1234H ADCW HL,1234H ADCW HL ADCW HL,HL SUB SP,1234H OTIMR SUBW BC SUBW HL,BC SUBW DE SUBW HL,DE SUBW 1234H SUBW HL,1234H SUBW HL SUBW HL,HL OTDMR SBCW BC SBCW HL,BC SBCW DE SBCW HL,DE SBCW 1234H SBCW HL,1234H SBCW HL SBCW HL,HL LDI CPI INI OUTI ANDW BC ANDW HL,BC ANDW DE ANDW HL,DE ANDW 1234H ANDW HL,1234H ANDW HL ANDW HL,HL LDD CPD IND OUTD XORW BC XORW HL,BC XORW DE XORW HL,DE XORW 1234H XORW HL,1234H XORW HL XORW HL,HL LDIR CPIR INIR OTIR ORW BC ORW HL,BC 8D 8E 8E 8F 8F 92 93 94 94 95 95 96 96 97 97 9B 9C 9C 9D 9D 9E 9E 9F 9F A0 A1 A2 A3 A4 A4 A5 A5 A6 A6 A7 A7 A8 A9 AA AB AC AC AD AD AE AE AF AF B0 B1 B2 B3 B4 B4 34 12 34 12 34 12 34 12 34 12 34 12 34 12 34 12 34 12 34 12 34 12 Mode I X X X X USER 'S M ANUAL ZILOG Object Code Source Code ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ORW ORW ORW ORW ORW ORW LDDR CPDR INDR OTDR CPW CPW CPW CPW CPW CPW CPW CPW LDCTL POP CALR PUSH ADD LDCTL RLCW RLCW RLCW RLCW RLCW RLCW RRCW RRCW RRCW RRCW RRCW RRCW RLW RLW RLW RLW RLW RLW RRW RRW RRW RRW RRW RRW SLAW SLAW SLAW SLAW SLAW SLAW B5 B5 B6 B6 B7 B7 B8 B9 BA BB BC BC BD BD BE BE BF BF C0 C1 C4 C5 C6 C8 CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB 34 12 34 12 34 12 34 12 12 34 12 00 01 02 03 04 05 08 09 0A 0B 0C 0D 10 11 12 13 14 15 18 19 1A 1B 1C 1D 20 21 22 23 24 25 Mode DE HL,DE 1234H HL,1234H HL HL,HL X BC HL,BC DE HL,DE 1234H HL,1234H HL HL,HL HL,SR SR NZ,12H SR HL,(1234H) SR,HL BC DE (HL) HL IX IY BC DE (HL) HL IX IY BC DE (HL) HL IX IY BC DE (HL) HL IX IY BC DE (HL) HL IX IY L L X L I X L Object Code Source Code ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED SRAW BC SRAW DE SRAW (HL) SRAW HL SRAW IX SRAW IY EX BC,BC' EX DE,DE' EX HL,HL' EX IX,IX' EX IY,IY' SRLW BC SRLW DE SRLW (HL) SRLW HL SRLW IX SRLW IY MULTW BC MULTW HL,BC MULTW DE MULTW HL,DE MULTW HL MULTW HL,HL MULTW HL,IX MULTW IX MULTW HL,IY MULTW IY MULTW 1234H MULTW HL,1234H MULTUW MULTUW MULTUW MULTUW MULTUW MULTUW MULTUW MULTUW MULTUW MULTUW MULTUW MULTUW DIVUW BC DIVUW HL,BC DIVUW DE DIVUW HL,DE DIVUW HL DIVUW HL,HL CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB 28 29 2A 2B 2C 2D 30 31 33 34 35 38 39 3A 3B 3C 3D 90 90 91 91 93 93 94 94 95 95 97 34 12 97 34 12 98 98 99 99 9B 9B 9C 9C 9D 9D 9F 9F B8 B8 B9 B9 BB BB Mode L L L L BC HL,BC DE HL,DE HL HL,HL HL,IX IX HL,IY IY 1234H HL,1234H USER 'S M ANUAL ZILOG Object Code Source Code ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED ED EE EE EF F0 F0 F1 F2 F2 F3 F4 F5 F6 F6 F7 F8 F8 F9 FA DIVUW DIVUW DIVUW DIVUW DIVUW DIVUW CALR CALR BTEST LDCTL OUTA CALR SUB LDCTL EXALL LDCTL INA CALR LDIW INIW OUTIW CALR LDDW INDW OUTDW CALR LDIRW INIRW OTIRW CALR SETC LDDRW INDRW OTDRW CALR RESC XOR XOR RST RET RET POP JP JP DI CALL NS PUSH OR OR RST RET RET LD JP CB CB CB CB CB CB CC CD CF D0 D3 D4 D6 D8 D9 DA DB DC E0 E2 E3 E4 E8 EA EB EC F0 F2 F3 F4 F7 F8 FA FB FC FF 12 12 BC BC BD BD BF BF 12 12 34 12 12 34 12 01 34 12 12 12 12 12 12 34 12 34 12 34 12 12 12 34 12 Mode HL,IX IX HL,IY IY 1234H HL,1234H Z,12H 12H A,DSR (1234H),A NC,12H HL,(1234H) DSR,A DSR,01H A,(1234H) C,12H X X I I X X I X L PO,12H X L PE,12H X L P,12H LCK X L M,12H LCK 12H A,12H 28H NS P AF NS,1234H P,1234H P,1234H AF 12H A,12H 30H M S SP,HL M,1234H X X X X L I I X X I X L X X X L I X Object Code Source Code Mode FA FB FC FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD JP S,1234H EI CALL S, M,1234H LD (BC),IY LD BC,HL LD IY,(BC) LD IY,BC ADD IY,BC LD BC,IY LD (BC),BC LD (DE),BC LD (HL),BC DJNZ 123456H LD (DE),IY LD DE,HL LD IY,(DE) LD IY,DE JR 123456H ADD IY,DE LD DE,IY LD (BC),DE LD (DE),DE LD (HL),DE JR NZ,123456H LD IY,1234H LD (1234H),IY INC IY INCW IY INC IYU DEC IYU LD IY,IX JR Z,123456H ADD IY,IY LD IY,(1234H) DEC IY DECW IY INC IYL DEC IYL LD IYL,12H JR NC,123456H LD (HL),IY LD HL,HL LD IY,(HL) INC (IY+12H) DEC (IY+12H) LD (IY+12H),34H LD IYU,12H LD IY,HL JR C,123456H ADD IY,SP LD HL,IY LD (BC),HL LD (DE),HL SWAP IY I X I X 34 12 34 01 02 03 07 09 0B 0C 0D 0F 10 11 12 13 17 18 19 1B 1C 1D 1F 20 21 22 23 23 24 25 27 28 29 2A 2B 2B 2C 2D 2E 30 31 32 33 34 35 36 36 37 38 39 3B 3C 3D 3E 12 56 34 12 56 34 12 56 34 12 34 12 34 12 56 34 12 34 12 12 56 34 12 12 12 34 12 12 56 34 12 L L L L X L L L L X L L L L X X L L L L X I I L L X X L X X I L X X X L L L I I I L X X L L L USER 'S M ANUAL ZILOG Object Code Source Code FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD OUTW LD LD LD ADD ADD ADD ADDW ADDW ADC ADC ADC ADCW ADCW SUB SUB SUB SUBW 3F 44 45 46 4C 4D 4E 54 55 56 5C 5D 5E 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 77 79 7C 7D 7E 84 85 86 87 87 8C 8D 8E 8F 8F 94 95 96 97 12 12 12 12 12 12 12 12 12 12 12 12 12 34 12 12 12 12 12 (HL),HL B,IYU B,IYL B,(IY+12H) C,IYU C,IYL C,(IY+12H) D,IYU D,IYL D,(IY+12H) E,IYU E,IYL E,(IY+12H) IYU,B IYU,C IYU,D IYU,E IYU,IYU IYU,IYL H,(IY+12H) IYU,A IYL,B IYL,C IYL,D IYL,E IYL,IYU IYL,IYL L,(IY+12H) IYL,A (IY+12H),B (IY+12H),C (IY+12H),D (IY+12H),E (IY+12H),H (IY+12H),L (IY+12H),A (C),1234H A,IYU A,IYL A,(IY+12H) A,IYU A,IYL A,(IY+12H) HL,IY IY A,IYU A,IYL A,(IY+12H) HL,IY IY A,IYU A,IYL A,(IY+12H) HL,IY Mode L I I I I I I I I I I I I I I I I I L Object Code Source Code FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD SUBW SBC SBC SBC SBCW SBCW AND AND AND AND AND AND ANDW ANDW XOR XOR XOR XOR XOR XOR XORW XORW OR OR OR OR OR OR ORW ORW CP CP CP CP CP CP CPW CPW DDIR DDIR DDIR DDIR CALR ADDW ADDW RLCW LD RLC RRCW LD RRC RLW LD RL 97 9C 9D 9E 9F 9F A4 A4 A5 A5 A6 A6 A7 A7 AC AC AD AD AE AE AF AF B4 B4 B5 B5 B6 B6 B7 B7 BC BC BD BD BE BE BF BF C0 C1 C2 C3 C4 C6 C6 CB CB CB CB CB CB CB CB CB 12 12 12 12 12 12 12 12 12 56 12 12 12 12 12 12 12 12 12 12 12 34 12 02 03 06 0A 0B 0E 12 13 16 IY A,IYU A,IYL A,(IY+12H) HL,IY IY A,IYU IYU A,IYL IYL (IY+12H) A,(IY+12H) HL,IY IY A,IYU IYU A,IYL IYL (IY+12H) A,(IY+12H) HL,IY IY A,IYU IYU A,IYL IYL (IY+12H) A,(IY+12H) HL,IY IY A,IYU IYU A,IYL IYL (IY+12H) A,(IY+12H) HL,IY IY LW IB,LW IW,LW IW NZ,123456H (IY+12H) HL,(IY+12H) (IY+12H) BC,(IY+12H) (IY+12H) (IY+12H) (IY+12H),BC (IY+12H) (IY+12H) DE,(IY+12H) (IY+12H) Mode I I I I I I I I I X I I I I I I I I I I I L L L USER 'S M ANUAL ZILOG Object Code Source Code Mode Object Code Source Code FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD RRW LD RR LD SLAW LD SLA LD SRAW LD SRA LD SRLW LD SRL BIT BIT BIT BIT BIT BIT BIT BIT RES RES MULTW MULTW RES MULTUW MULTUW RES RES RES RES DIVUW DIVUW RES SET SET SET SET SET SET SET SET CALR CALR ADCW ADCW LDCTL OUTAW CALR SUBW SUBW I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FD FE FE FF LDCTL EXXY LDCTL INAW CALR SBCW SBCW POP EX CALR PUSH ANDW ANDW JP CALR XORW XORW CALR PUSH ORW ORW SETC LD CALR CPW CPW CP CP RST CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CC CD CE CE D0 D3 D4 D6 D6 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 56 56 12 12 1A 1B 1E 21 22 23 26 29 2A 2B 2E 33 3A 3B 3E 46 4E 56 5E 66 6E 76 7E 86 8E 92 92 96 9A 9A 9E A6 AE B6 BA BA BE C6 CE D6 DE E6 EE F6 FE 34 12 34 12 34 12 56 34 12 12 12 (IY+12H) (IY+12H),DE (IY+12H) IY,(SP+12H) (IY+12H) IX,(IY+12H) (IY+12H) (SP+12H),IY (IY+12H) (IY+12H),IX (IY+12H) HL,(IY+12H) (IY+12H) (IY+12H),HL (IY+12H) 0,(IY+12H) 1,(IY+12H) 2,(IY+12H) 3,(IY+12H) 4,(IY+12H) 5,(IY+12H) 6,(IY+12H) 7,(IY+12H) 0,(IY+12H) 1,(IY+12H) (IY+12H) HL,(IY+12H) 2,(IY+12H) (IY+12H) HL,(IY+12H) 3,(IY+12H) 4,(IY+12H) 5,(IY+12H) 6,(IY+12H) (IY+12H) HL,(IY+12H) 7,(IY+12H) 0,(IY+12H) 1,(IY+12H) 2,(IY+12H) 3,(IY+12H) 4,(IY+12H) 5,(IY+12H) 6,(IY+12H) 7,(IY+12H) Z,123456H 123456H (IY+12H) HL,(IY+12H) A,YSR (1234H),HL NC,123456H (IY+12H) HL,(IY+12H) L L L L L L X X I I I X I D8 D9 DA DB DC DE DE E1 E3 E4 E5 E6 E6 E9 EC EE EE F4 F5 F6 F6 F7 F9 FC FE FE 12 12 01 34 12 56 34 12 12 12 56 34 12 12 12 56 34 12 12 12 56 34 12 34 12 12 12 12 12 Mode YSR,A YSR,01H HL,(1234H) C,123456H (IY+12H) HL,(IY+12H) IY (SP),IY PO,123456H IY (IY+12H) HL,(IY+12H) (IY) PE,123456H (IY+12H) HL,(IY+12H) P,123456H 1234H (IY+12H) HL,(IY+12H) XM SP,IY M,123456H (IY+12H) HL,(IY+12H) 12H A,12H 38H I X I L L X L I I X X I I X I I I L L X I I X USER 'S M ANUAL ZILOG (c) 1994, 1995, 1996, 1997 by Zilog, Inc. All rights reserved. No part of this document may be copied or reproduced in any form or by any means without the prior written consent of Zilog, Inc. The information in this document is subject to change without notice. Devices sold by Zilog, Inc. are covered by warranty and patent indemnification provisions appearing in Zilog, Inc. Terms and Conditions of Sale only. ZILOG, INC. MAKES NO WARRANTY, EXPRESS, STATUTORY, IMPLIED OR BY DESCRIPTION, REGARDING THE INFORMATION SET FORTH HEREIN OR REGARDING THE FREEDOM OF THE DESCRIBED DEVICES FROM INTELLECTUAL PROPERTY INFRINGEMENT. ZILOG, INC. MAKES NO WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PURPOSE. Zilog, Inc. shall not be responsible for any errors that may appear in this document. Zilog, Inc. makes no commitment to update or keep current the information contained in this document. Zilog's products are not authorized for use as critical components in life support devices or systems unless a specific written agreement pertaining to such intended use is executed between the customer and Zilog prior to use. Life support devices or systems are those which are intended for surgical implantation into the body, or which sustains life whose failure to perform, when properly used in accordance with instructions for use provided in the labeling, can be reasonably expected to result in significant injury to the user. Zilog, Inc. 210 East Hacienda Ave. Campbell, CA 95008-6600 Telephone (408) 370-8000 Telex 910-338-7621 FAX 408 370-8056 Internet: http://www.zilog.com USER 'S M ANUAL ZILOG USER's MANUAL APPENDIX D INSTRUCTIONS AFFECTED BY NORMAL/ EXTENDED MODE, AND LONG WORD MODE This Appendix has two sets of tables. Each table is a subset of the Table in the Appendix B. The Table D-1 has the instructions which works differently in the Native and Extended mode of operation, and the Table D-2 has the instructions which works differently in Word/Long Word mode of operation. USER 'S M ANUAL ZILOG Table D-1. Instructions operating differently in Native or Extended mode of operation. Source Code Object Code Source Code Object Code ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CALR CPD CPDR CPI CPIR DEC DEC DEC DEC DEC DEC DECW 09 19 29 39 DD DD DD DD FD FD FD FD FD DD ED FD DD ED FD DD ED FD DD ED FD DD ED FD DD ED FD DD ED FD DD ED FD DD ED ED ED ED ED 0B 1B 2B DD FD 3B 0B DECW DECW DECW DECW DECW DJNZ DJNZ DJNZ INC INC INC INC INC INC INCW INCW INCW INCW INCW INCW JP JP JP JR JR JR JR JR JR JR JR JR JR JR JR JR JR RET RET RET RET RET RET RET RET RET RET RET RET RET RETI 1B 2B DD FD 3B FD DD 10 03 13 23 DD FD 33 03 13 23 DD FD 33 E9 DD FD FD DD 18 FD DD 38 FD DD FD DD 20 FD DD 28 D8 F8 D0 F0 E0 C0 F0 E8 E0 F8 E8 C8 C9 ED HL,BC HL,DE HL,HL HL,SP IX,BC IX,DE IX,IX IX,SP IY,BC IY,DE IY,IY IY,SP 123456H 1234H 12H C,123456H C,1234H C,12H M,123456H M,1234H M,12H NC,123456H NC,1234H NC,12H NZ,123456H NZ,1234H NZ,12H P,123456H P,1234H P,12H PE,123456H PE,1234H PE,12H PO,123456H PO,1234H PO,12H Z,123456H Z,1234H Z,12H BC DE HL IX IY SP BC 09 19 29 39 09 19 29 39 CD CD CD DC DC DC FC FC FC D4 D4 D4 C4 C4 C4 F4 F4 F4 EC EC EC E4 E4 E4 CC CC CC A9 B9 A1 B1 2B 2B 56 34 12 56 34 12 34 12 12 34 12 12 34 12 56 34 12 56 34 12 56 34 12 56 34 12 56 34 12 56 34 12 12 34 12 12 34 12 12 34 12 12 34 12 12 34 12 12 34 12 12 DE HL IX IY SP 123456H 1234H 12H BC DE HL IX IY SP BC DE HL IX IY SP (HL) (IX) (IY) 123456H 1234H 12H C,123456H C,1234H C,12H NC,123456H NC,1234H NZ,123456H NZ,1234H NZ,12H Z,123456H Z,1234H Z,12H C M NC NS NV NZ P PE PO S V Z 2B 2B 10 10 12 56 34 34 12 12 34 12 56 34 34 12 12 56 34 56 34 34 12 34 12 12 56 34 34 12 12 23 23 23 23 E9 E9 18 18 12 38 38 12 30 30 20 20 12 28 28 12 4D 12 USER 'S M ANUAL ZILOG Source Code Object Code RETN RST RST RST RST RST RST RST RST ED C7 CF D7 DF E7 EF F7 FF 00H 08H 10H 18H 20H 28H 30H 38H 45 Table D-2. Instructions operates different in Long Word Modes. Source Code Object Code Source Code Object Code EX EX EX EX EX EX EX EX EX EX EX EX EX EX EX EX EX EX EXTS EXTS LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD E3 DD FD ED ED ED ED ED ED EB ED ED ED ED ED ED ED ED ED ED FD FD FD DD FD FD FD FD DD FD FD FD FD DD FD DD DD DD ED LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD DD FD DD FD DD DD DD ED DD FD DD FD DD DD DD ED DD FD DD DD FD DD DD DD DD DD DD DD DD FD FD FD FD FD FD FD F9 DD FD (SP),HL (SP),IX (SP),IY BC,BC' BC,DE BC,HL BC,IX BC,IY DE,DE' DE,HL DE,IX DE,IY HL,HL' HL,IX HL,IY IX,IX' IX,IY IY,IY' A (BC),BC (BC),DE (BC),HL (BC),IX (BC),IY (DE),BC (DE),DE (DE),HL (DE),IX (DE),IY (HL),BC (HL),DE (HL),HL (HL),IX (HL),IY BC,(BC) BC,(DE) BC,(HL) BC,BC E3 E3 CB 05 0D 03 0B CB 13 1B CB 33 3B CB 2B CB 65 65 0C 1C 3C 01 01 0D 1D 3D 11 11 0F 1F 3F 31 31 0C 0D 0F 02 30 31 33 34 35 BC,DE BC,HL BC,IX BC,IY DE,(BC) DE,(DE) DE,(HL) DE,BC DE,DE DE,HL DE,IX DE,IY HL,(BC) HL,(DE) HL,(HL) HL,BC HL,DE HL,HL HL,I HL,IX HL,IY I,HL IX,(BC) IX,(DE) IX,(HL) IX,BC IX,DE IX,HL IX,IY IY,(BC) IY,(DE) IY,(HL) IY,BC IY,DE IY,HL IY,IX SP,HL SP,IX SP,IY 02 02 0B 0B 1C 1D 1F 12 12 12 1B 1B 3C 3D 3F 32 32 32 57 3B 3B 47 03 13 33 07 17 37 27 03 13 33 07 17 37 27 F9 F9 USER 'S M ANUAL ZILOG Source Code Object Code LDCTL HL,SR LDCTL SR,HL LDDRW LDDW LDIRW LDIW LDW HL,I LDW I,HL POP AF POP BC POP DE POP HL POP IX POP IY POP SR PUSH AF PUSH BC PUSH DE PUSH HL PUSH IX PUSH IY PUSH SR ED ED ED ED ED ED DD DD F1 C1 D1 E1 DD FD ED F5 C5 D5 E5 DD FD ED C0 C8 F8 E8 F0 E0 57 47 E1 E1 C1 E5 E5 C5 (c) 1994, 1995, 1996, 1997 by Zilog, Inc. All rights reserved. No part of this document may be copied or reproduced in any form or by any means without the prior written consent of Zilog, Inc. The information in this document is subject to change without notice. Devices sold by Zilog, Inc. are covered by warranty and patent indemnification provisions appearing in Zilog, Inc. Terms and Conditions of Sale only. ZILOG, INC. MAKES NO WARRANTY, EXPRESS, STATUTORY, IMPLIED OR BY DESCRIPTION, REGARDING THE INFORMATION SET FORTH HEREIN OR REGARDING THE FREEDOM OF THE DESCRIBED DEVICES FROM INTELLECTUAL PROPERTY INFRINGEMENT. ZILOG, INC. MAKES NO WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PURPOSE. Zilog, Inc. shall not be responsible for any errors that may appear in this document. Zilog, Inc. makes no commitment to update or keep current the information contained in this document. Zilog's products are not authorized for use as critical components in life support devices or systems unless a specific written agreement pertaining to such intended use is executed between the customer and Zilog prior to use. Life support devices or systems are those which are intended for surgical implantation into the body, or which sustains life whose failure to perform, when properly used in accordance with instructions for use provided in the labeling, can be reasonably expected to result in significant injury to the user. Zilog, Inc. 210 East Hacienda Ave. Campbell, CA 95008-6600 Telephone (408) 370-8000 Telex 910-338-7621 FAX 408 370-8056 Internet: http://www.zilog.com USER 'S M ANUAL ZILOG USER's MANUAL APPENDIX E INSTRUCTIONS AFFECTED BY DDIR IM INSTRUCTIONS This Appendix has instructions which can be used with the Decoder Directive(s) Extend Immediate. There are eight tables (E1-E8) which are the subset of the Table A, sorted by the category of the instruction. Note that the instructions listed here does not have the DDIR Decoder Directive in front of the instructions listed below, and notation used here may be different by the assembler to be used. Table E-1. Valid with DDIR IB in Extended mode. LW bit status does not affect the operation ADD ADD CALL CALL CALL CALL CALL CALL CALL CALL CALL JP JP JP JP JP JP JP JP JP JP JP JP JP SUB SUB HL,(123456H) SP,123456H 123456H C,123456H M,123456H NC,123456H NZ,123456H P,123456H PE,123456H PO,123456H Z,123456H 123456H C,123456H M,123456H NC,123456H NS,123456H NV,123456H NZ,123456H P,123456H PE,123456H PO,123456H S,123456H V,123456H Z,123456H HL,(123456H) SP,123456H ED ED CD DC FC D4 C4 F4 EC E4 CC C3 DA FA D2 F2 E2 C2 F2 EA E2 FA EA CA ED ED C6 82 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 D6 92 56 56 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 56 56 34 34 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 34 34 12 12 12 12 Table E-2. Valid with DDIR IB. XM bit status does not affect the operation. Transfer size determined by LW bit. (Either with DDIR IB, DDIR IB,LW or DDIR IB,W) LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LDW LDW LDW (123456H),BC (123456H),DE (123456H),HL (123456H),HL (123456H),IX (123456H),IY (123456H),SP (IX+1234H),BC (IX+1234H),DE (IX+1234H),HL (IX+1234H),IY (IY+1234H),BC (IY+1234H),E (IY+1234H),HL (IY+1234H),IX (SP+1234H),BC (SP+1234H),DE (SP+1234H),HL (SP+1234H),IX (SP+1234H),IY BC,(123456H) BC,(IX+1234H) BC,(IY+1234H) BC,(SP+1234H) DE,(123456H) DE,(IX+1234H) DE,(IY+1234H) DE,(SP+1234H) HL,(123456H) HL,(123456H) HL,(IX+1234H) HL,(IY+1234H) HL,(SP+1234H) IX,(123456H) IX,(IY+1234H) IX,(SP+1234H) IY,(123456H) IY,(IX+1234H) IY,(SP+1234H) SP,(123456H) (BC),123456H (DE),123456H (HL),123456H ED ED 22 ED DD FD ED DD DD DD DD FD FD FD FD DD DD DD DD FD ED DD FD DD ED DD FD DD 2A ED DD FD DD DD FD DD FD DD FD ED ED ED ED 43 53 56 63 22 22 73 CB CB CB CB CB 73 CB CB CB CB CB CB CB 4B CB CB CB 5B CB CB CB 56 6B CB CB CB 2A CB CB 2A CB CB 7B 06 16 36 56 56 34 56 56 56 56 34 34 34 34 34 34 34 34 34 34 34 34 34 56 34 34 34 56 34 34 34 34 56 34 34 34 56 34 34 56 34 34 56 56 56 56 34 34 12 34 34 34 34 12 12 12 12 12 12 12 12 12 12 12 12 12 34 12 12 12 34 12 12 12 12 34 12 12 12 34 12 12 34 12 12 34 34 34 34 12 12 12 12 12 12 0B 1B 3B 2B 0B 3B 2B 09 19 39 29 29 12 03 03 01 12 13 13 11 12 33 33 31 12 23 21 12 23 21 12 12 12 12 USER 'S M ANUAL ZILOG Table E-3. Valid with DDIR IB in Long Word mode. XM bit status does not affect the operation. (Either with DDIR IB,LW or DDIR IB with LW bit set.) LD LD LD LD LD LD PUSH BC,123456H DE,123456H HL,123456H IX,123456H IY,123456H SP,123456H 123456H 01 11 21 DD FD 31 FD 56 56 56 21 21 56 F5 34 34 34 56 56 34 56 12 12 12 34 34 12 34 12 12 12 Table E-4. Valid with DDIR IB. XM bit nor LW bit status do not affect the operation ADC ADC ADCW ADCW ADCW ADCW ADD ADD ADDW ADDW ADDW ADDW AND AND AND AND ANDW ANDW ANDW ANDW BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT CP CP CP CP A,(IX+1234H) A,(IY+1234H) (IX+1234H) (IY+1234H) HL,(IX+1234H) HL,(IY+1234H) A,(IX+1234H) A,(IY+1234H) (IX+1234H) (IY+1234H) HL,(IX+1234H) HL,(IY+1234H) (IX+1234H) (IY+1234H) A,(IX+1234H) A,(IY+1234H) (IX+1234H) (IY+1234H) HL,(IX+1234H) HL,(IY+1234H) 0,(IX+1234H) 0,(IY+1234H) 1,(IX+1234H) 1,(IY+1234H) 2,(IX+1234H) 2,(IY+1234H) 3,(IX+1234H) 3,(IY+1234H) 4,(IX+1234H) 4,(IY+1234H) 5,(IX+1234H) 5,(IY+1234H) 6,(IX+1234H) 6,(IY+1234H) 7,(IX+1234H) 7,(IY+1234H) (IX+1234H) (IY+1234H) A,(IX+1234H) A,(IY+1234H) DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD 8E 8E CE CE CE CE 86 86 C6 C6 C6 C6 A6 A6 A6 A6 E6 E6 E6 E6 CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB BE BE BE BE 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 46 46 4E 4E 56 56 5E 5E 66 66 6E 6E 76 76 7E 7E CPW (IX+1234H) CPW (IY+1234H) CPW HL,(IX+1234H) CPW HL,(IY+1234H) DEC (IX+1234H) DEC (IY+1234H) DIVUW (IX+1234H) DIVUW (IY+1234H) DIVUW HL,(IX+1234H) DIVUW HL,(IY+1234H) INA A,(123456H) INAW HL,(123456H) INC (IX+1234H) INC (IY+1234H) LD (123456H),A LD (IX+1234H),56H LD (IX+1234H),A LD (IX+1234H),B LD (IX+1234H),C LD (IX+1234H),D LD (IX+1234H),E LD (IX+1234H),H LD (IX+1234H),L LD (IY+1234H),56H LD (IY+1234H),A LD (IY+1234H),B LD (IY+1234H),C LD (IY+1234H),D LD (IY+1234H),DE LD (IY+1234H),H LD (IY+1234H),L LD A,(1234H) LD A,(IX+1234H) LD A,(IY+1234H) LD B,(IX+1234H) LD B,(IY+1234H) LD C,(IX+1234H) LD C,(IY+1234H) LD D,(IX+1234H) LD D,(IY+1234H) LD E,(IX+1234H) LD E,(IY+1234H) LD H,(IX+1234H) LD H,(IY+1234H) LD L,(IX+1234H) LD L,(IY+1234H) MULTUW (IX+1234H) MULTUW (IY+1234H) MULTUW HL,(IX+1234H) MULTUW HL,(IY+1234H) MULTW (IX+1234H) MULTW (IY+1234H) MULTW HL,(IX+1234H) MULTW HL,(IY+1234H) OR (IX+1234H) DD FD DD FD DD FD DD FD DD FD ED FD DD FD 32 DD DD DD DD DD DD DD DD FD FD FD FD FD FD FD FD 3A DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FE FE FE FE 35 35 CB CB CB CB DB DB 34 34 56 36 77 70 71 72 73 74 75 36 77 70 71 72 CB 74 75 34 7E 7E 46 46 4E 4E 56 56 5E 5E 66 66 6E 6E CB CB CB CB CB CB CB CB B6 34 34 34 34 34 34 34 34 34 34 34 34 12 12 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 BA BA BA BA 56 56 1B 9A 9A 9A 9A 92 92 92 92 USER 'S M ANUAL ZILOG OR OR OR ORW ORW ORW ORW OUTA OUTAW RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RL RL RLC RLC RLCW RLCW RLW RLW RR RR RRC RRC RRCW RRCW RRW RRW SBC SBC SBCW SBCW SET SET SET SET SET SET SET SET SET SET (IY+1234H) A,(IX+1234H) A,(IY+1234H) (IX+1234H) (IY+1234H) HL,(IX+1234H) HL,(IY+1234H) (123456H),A (123456H),HL 0,(IX+1234H) 0,(IY+1234H) 1,(IX+1234H) 1,(IY+1234H) 2,(IX+1234H) 2,(IY+1234H) 3,(IX+1234H) 3,(IY+1234H) 4,(IX+1234H) 4,(IY+1234H) 5,(IX+1234H) 5,(IY+1234H) 6,(IX+1234H) 6,(IY+1234H) 7,(IX+1234H) 7,(IY+1234H) (IX+1234H) (IY+1234H) (IX+1234H) (IY+1234H) (IX+1234H) (IY+1234H) (IX+1234H) (IY+1234H) (IX+1234H) (IY+1234H) (IX+1234H) (IY+1234H) (IX+1234H) (IY+1234H) (IX+1234H) (IY+1234H) A,(IX+1234H) A,(IY+1234H) (IX+1234H) (IY+1234H) 0,(IX+1234H) 0,(IY+1234H) 1,(IX+1234H) 1,(IY+1234H) 2,(IX+1234H) 2,(IY+1234H) 3,(IX+1234H) 3,(IY+1234H) 4,(IX+1234H) 4,(IY+1234H) FD DD FD DD FD DD FD ED FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD B6 B6 B6 F6 F6 F6 F6 D3 D3 CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB 9E 9E DE DE CB CB CB CB CB CB CB CB CB CB 34 34 34 34 34 34 34 56 56 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 12 12 12 12 12 12 12 34 34 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 86 86 8E 8E 96 96 9E 9E A6 A6 AE AE B6 B6 BE BE 16 16 06 06 02 02 12 12 1E 1E 0E 0E 0A 0A 1A 1A C6 C6 CE CE D6 D6 DE DE E6 E6 SET SET SET SET SET SET SLA SLA SLAW SLAW SRA SRA SRAW SRAW SRL SRL SRLW SRLW SUB SUB SUBW SUBW XOR XOR XOR XOR XORW XORW XORW XORW 5,(IX+1234H) 5,(IY+1234H) 6,(IX+1234H) 6,(IY+1234H) 7,(IX+1234H) 7,(IY+1234H) (IX+1234H) (IY+1234H) (IX+1234H) (IY+1234H) (IX+1234H) (IY+1234H) (IX+1234H) (IY+1234H) (IX+1234H) (IY+1234H) (IX+1234H) (IY+1234H) A,(IX+1234H) A,(IY+1234H) HL,(IX+1234H) HL,(IY+1234H) (IX+1234H) (IY+1234H) A,(IX+1234H) A,(IY+1234H) (IX+1234H) (IY+1234H) HL,(IX+1234H) HL,(IY+1234H) DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB 96 96 D6 D6 AE AE AE AE EE EE EE EE 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 EE EE F6 F6 FE FE 26 26 22 22 2E 2E 2A 2A 3E 3E 3A 3A USER 'S M ANUAL ZILOG Table E-5. Valid with DDIR IW in Exteded mode. LW bit status does not affect the operation ADD ADD CALL CALL CALL CALL CALL CALL CALL CALL CALL JP JP JP JP JP JP JP JP JP JP JP JP JP SUB SUB HL,(12345678H) SP,12345678H 12345678H C,12345678H M,12345678H NC,12345678H NZ,12345678H P,12345678H PE,12345678H PO,12345678H Z,12345678H 12345678H C,12345678H M,12345678H NC,12345678H NS,12345678H NV,12345678H NZ,12345678H P,12345678H PE,12345678H PO,12345678H S,12345678H V,12345678H Z,12345678H HL,(12345678H) SP,12345678H ED ED CD DC FC D4 C4 F4 EC E4 CC C3 DA FA D2 F2 E2 C2 F2 EA E2 FA EA CA ED ED C6 82 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 D6 92 78 78 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 78 78 56 56 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 56 56 34 34 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 34 34 12 12 12 12 Table E-6. Valid with DDIR IW. XM bit status does not affect the operation. Transfer size determined by LW bit LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LDW LDW LDW (12345678H),BC (12345678H),DE (12345678H),HL (12345678H),HL (12345678H),IX (12345678H),IY (12345678H),SP (IX+123456H),BC (IX+123456H),DE (IX+123456H),HL (IX+123456H),IY (IY+123456H),BC (IY+123456H),E (IY+123456H),HL (IY+123456H),IX (SP+123456H),BC (SP+123456H),DE (SP+123456H),HL (SP+123456H),IX (SP+123456H),IY BC,(12345678H) BC,(IX+123456H) BC,(IY+123456H) BC,(SP+123456H) DE,(12345678H) DE,(IX+123456H) DE,(IY+123456H) DE,(SP+123456H) HL,(12345678H) HL,(12345678H) HL,(IX+123456H) HL,(IY+123456H) HL,(SP+123456H) IX,(12345678H) IX,(IY+123456H) IX,(SP+123456H) IY,(12345678H) IY,(IX+123456H) IY,(SP+123456H) SP,(12345678H) (BC),12345678H (DE),12345678H (HL),12345678H ED ED 22 ED DD FD ED DD DD DD DD FD FD FD FD DD DD DD DD FD ED DD FD DD ED DD FD DD 2A ED DD FD DD DD FD DD FD DD FD ED ED ED ED 43 53 78 63 22 22 73 CB CB CB CB CB 73 CB CB CB CB CB CB CB 4B CB CB CB 5B CB CB CB 78 6B CB CB CB 2A CB CB 2A CB CB 7B 06 16 36 78 78 56 78 78 78 78 56 56 56 56 56 56 56 56 56 56 56 56 56 78 34 34 34 78 56 56 56 56 78 56 56 56 78 56 56 78 56 56 78 78 78 78 56 56 34 56 56 56 56 34 34 34 34 34 34 34 34 34 34 34 34 34 56 12 12 12 56 34 34 34 34 56 34 34 34 56 34 34 56 34 34 56 56 56 56 34 34 12 34 34 34 34 12 12 12 12 12 12 12 12 12 12 12 12 12 34 03 03 01 34 12 12 12 12 34 12 12 12 34 12 12 34 12 12 34 34 34 34 12 12 12 12 12 12 0B 1B 3B 2B 0B 3B 2B 09 19 39 29 29 12 12 13 13 11 12 33 33 31 12 23 21 12 23 21 12 12 12 12 USER 'S M ANUAL ZILOG Table E-7. Valid with DDIR IW in Long Word mode. XM bit status does not affect the operation. (Either with DDIR IW,LW or DDIR IW with LW bit set.) LD LD LD LD LD LD PUSH BC,12345678H DE,12345678H HL,12345678H IX,12345678H IY,12345678H SP,12345678H 12345678H 01 11 21 DD FD 31 FD 78 78 78 21 21 78 F5 56 56 56 78 78 56 78 34 34 34 56 56 34 56 12 12 12 34 12 34 12 12 34 12 Table E-8. Valid with DDIR IW. XM bit nor LW bit status do not affect the operation ADC ADC ADCW ADCW ADCW ADCW ADD ADD ADDW ADDW ADDW ADDW AND AND AND AND ANDW ANDW ANDW ANDW BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT CP CP CP CP CPW CPW A,(IX+123456H) A,(IY+123456H) (IX+123456H) (IY+123456H) HL,(IX+123456H) HL,(IY+123456H) A,(IX+123456H) A,(IY+123456H) (IX+123456H) (IY+123456H) HL,(IX+123456H) HL,(IY+123456H) (IX+123456H) (IY+123456H) A,(IX+123456H) A,(IY+123456H) (IX+123456H) (IY+123456H) HL,(IX+123456H) HL,(IY+123456H) 0,(IX+123456H) 0,(IY+123456H) 1,(IX+123456H) 1,(IY+123456H) 2,(IX+123456H) 2,(IY+123456H) 3,(IX+123456H) 3,(IY+123456H) 4,(IX+123456H) 4,(IY+123456H) 5,(IX+123456H) 5,(IY+123456H) 6,(IX+123456H) 6,(IY+123456H) 7,(IX+123456H) 7,(IY+123456H) (IX+123456H) (IY+123456H) A,(IX+123456H) A,(IY+123456H) (IX+123456H) (IY+123456H) DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD 8E 8E CE CE CE CE 86 86 C6 C6 C6 C6 A6 A6 A6 A6 E6 E6 E6 E6 CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB CB BE BE BE BE FE FE 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 46 46 4E 4E 56 56 5E 5E 66 66 6E 6E 76 76 7E 7E CPW CPW DEC DEC DIVUW DIVUW DIVUW DIVUW INA INAW INC INC LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD MULTUW MULTUW MULTUW MULTUW MULTW MULTW MULTW MULTW OR OR HL,(IX+123456H) HL,(IY+123456H) (IX+123456H) (IY+123456H) (IX+123456H) (IY+123456H) HL,(IX+123456H) HL,(IY+123456H) A,(123456H) HL,(123456H) (IX+123456H) (IY+123456H) (12345678H),A (IX+123456H),56H (IX+123456H),A (IX+123456H),B (IX+123456H),C (IX+123456H),D (IX+123456H),E (IX+123456H),H (IX+123456H),L (IY+123456H),78H (IY+123456H),A (IY+123456H),B (IY+123456H),C (IY+123456H),D (IY+123456H),DE (IY+123456H),H (IY+123456H),L A,(12345678H) A,(IX+123456H) A,(IY+123456H) B,(IX+123456H) B,(IY+123456H) C,(IX+123456H) C,(IY+123456H) D,(IX+123456H) D,(IY+123456H) E,(IX+123456H) E,(IY+123456H) H,(IX+123456H) H,(IY+123456H) L,(IX+123456H) L,(IY+123456H) (IX+123456H) (IY+123456H) HL,(IX+123456H) HL,(IY+123456H) (IX+123456H) (IY+123456H) HL,(IX+123456H) HL,(IY+123456H) (IX+123456H) (IY+123456H) DD FD DD FD DD FD DD FD ED FD DD FD 32 DD DD DD DD DD DD DD DD FD FD FD FD FD FD FD FD 3A DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD FE 56 FE 56 35 56 35 56 CB 56 CB 56 CB 56 CB 56 DB 56 DB 56 56 34 56 34 78 56 36 56 77 56 70 56 71 56 72 56 73 56 74 56 75 56 36 56 77 56 70 56 71 56 72 56 CB 56 74 56 75 56 78 56 7E 56 7E 56 46 56 46 56 4E 56 4E 56 56 56 56 56 5E 56 5E 56 66 56 66 56 6E 56 6E 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 B6 56 B6 56 34 34 34 34 34 34 34 34 34 34 12 12 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 BA BA BA BA 56 78 1B 9A 9A 9A 9A 92 92 92 92 USER 'S M ANUAL ZILOG OR OR ORW ORW ORW ORW OUTA OUTAW RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RL RL RLC RLC RLCW RLCW RLW RLW RR RR RRC RRC RRCW RRCW RRW RRW SBC SBC SBCW SBCW SET SET SET SET SET SET SET SET SET A,(IX+123456H) A,(IY+123456H) (IX+123456H) (IY+123456H) HL,(IX+123456H) HL,(IY+123456H) (12345678H),A (12345678H),HL 0,(IX+123456H) 0,(IY+123456H) 1,(IX+123456H) 1,(IY+123456H) 2,(IX+123456H) 2,(IY+123456H) 3,(IX+123456H) 3,(IY+123456H) 4,(IX+123456H) 4,(IY+123456H) 5,(IX+123456H) 5,(IY+123456H) 6,(IX+123456H) 6,(IY+123456H) 7,(IX+123456H) 7,(IY+123456H) (IX+123456H) (IY+123456H) (IX+123456H) (IY+123456H) (IX+123456H) (IY+123456H) (IX+123456H) (IY+123456H) (IX+123456H) (IY+123456H) (IX+123456H) (IY+123456H) (IX+123456H) (IY+123456H) (IX+123456H) (IY+123456H) A,(IX+123456H) A,(IY+123456H) (IX+123456H) (IY+123456H) 0,(IX+123456H) 0,(IY+123456H) 1,(IX+123456H) 1,(IY+123456H) 2,(IX+123456H) 2,(IY+123456H) 3,(IX+123456H) 3,(IY+123456H) 4,(IX+123456H) DD FD DD FD DD FD ED FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD B6 56 B6 56 F6 56 F6 56 F6 56 F6 56 D3 78 D3 78 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 9E 56 9E 56 DE 56 DE 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 34 34 34 34 34 34 56 56 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 12 12 12 12 12 12 34 34 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 86 86 8E 8E 96 96 9E 9E A6 A6 AE AE B6 B6 BE BE 16 16 06 06 02 02 12 12 1E 1E 0E 0E 0A 0A 1A 1A C6 C6 CE CE D6 D6 DE DE E6 SET SET SET SET SET SET SET SLA SLA SLAW SLAW SRA SRA SRAW SRAW SRL SRL SRLW SRLW SUB SUB SUBW SUBW XOR XOR XOR XOR XORW XORW XORW XORW 4,(IY+123456H) 5,(IX+123456H) 5,(IY+123456H) 6,(IX+123456H) 6,(IY+123456H) 7,(IX+123456H) 7,(IY+123456H) (IX+123456H) (IY+123456H) (IX+123456H) (IY+123456H) (IX+123456H) (IY+123456H) (IX+123456H) (IY+123456H) (IX+123456H) (IY+123456H) (IX+123456H) (IY+123456H) A,(IX+123456H) A,(IY+123456H) HL,(IX+123456H) HL,(IY+123456H) (IX+123456H) (IY+123456H) A,(IX+123456H) A,(IY+123456H) (IX+123456H) (IY+123456H) HL,(IX+123456H) HL,(IY+123456H) FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD DD FD CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 CB 56 96 56 96 56 D6 56 D6 56 AE 56 AE 56 AE 56 AE 56 EE 56 EE 56 EE 56 EE 56 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 E6 EE EE F6 F6 FE FE 26 26 22 22 2E 2E 2A 2A 3E 3E 3A 3A USER 'S M ANUAL ZILOG (c) 1994, 1995, 1996, 1997 by Zilog, Inc. All rights reserved. No part of this document may be copied or reproduced in any form or by any means without the prior written consent of Zilog, Inc. The information in this document is subject to change without notice. Devices sold by Zilog, Inc. are covered by warranty and patent indemnification provisions appearing in Zilog, Inc. Terms and Conditions of Sale only. ZILOG, INC. MAKES NO WARRANTY, EXPRESS, STATUTORY, IMPLIED OR BY DESCRIPTION, REGARDING THE INFORMATION SET FORTH HEREIN OR REGARDING THE FREEDOM OF THE DESCRIBED DEVICES FROM INTELLECTUAL PROPERTY INFRINGEMENT. ZILOG, INC. MAKES NO WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PURPOSE. Zilog, Inc. shall not be responsible for any errors that may appear in this document. Zilog, Inc. makes no commitment to update or keep current the information contained in this document. Zilog's products are not authorized for use as critical components in life support devices or systems unless a specific written agreement pertaining to such intended use is executed between the customer and Zilog prior to use. Life support devices or systems are those which are intended for surgical implantation into the body, or which sustains life whose failure to perform, when properly used in accordance with instructions for use provided in the labeling, can be reasonably expected to result in significant injury to the user. Zilog, Inc. 210 East Hacienda Ave. Campbell, CA 95008-6600 Telephone (408) 370-8000 Telex 910-338-7621 FAX 408 370-8056 Internet: http://www.zilog.com