ࡱ> @Y bjbjWW 8==uG]p4$ |:(N,H:<<<Ftf$XXX|X:X:~  Z:(T`:淾l 2TABLE OF CONTENTS Chapter 1. Introduction Page 1.0 Introduction.......................................... 3 1.1 Features.............................................. 3 Chapter 2. Architecture 2.0 Overview ............................................ 4 Chapter 3. Pin Description 3.0 Pin Description.................................... 6 Chapter 4. Programming the PlO 4.0 Reset................................................... 9 4.1 Loading the interrupt Vector................. 9 4.2 Selecting an Operating Mode............... 10 4.3 Setting the Interrupt Control Word........ 11 Chapter 5. Timing 5.0 Output Mode (Mode 0).......................... 12 5.1 Input Mode (Mode 1).......................... 13 5.2 Bidirectional Mode (Mode 2)............... 13 5.3 Control Mode (Mode 3)......................... 14 Chapter 6. Interrupt Servicing 6.0 Interrupt servicing................................. 16 Chapter 7. Applications 7.0 Extending the Interrupt Daisy Chain....... 18 7.1 I/O Device Interface............................... 18 7.2 Control interface.................................... 19 Chapter 8. Programming Summary 8.0 Load Interrupt Vector............................. 22 8.1 Set Mode............................................... 22 8.2 Set Interrupt Control.............................. 22 List of figures Page Figure 2 -1 PIO Block Diagram................................ 5 Figure 2 -2 Port I/O Block Diagram.......................... 5 Figure 3 -1 PIO Pin Functions............................... 8 Figure 3 -2 PIO 44 - Pin PLCC Pin Arrangements. 8 Figure 5 -1 Mode 0 (Output) Timing...................... 12 Figure 5 -2 Mode 1 (Input) Timing......................... 13 Figure 5 -3 Port A, Mode 2 (Bidirectional) Timing.. 14 Figure 5 -4 Control Mode (Mode 3) Timing............ 15 Figure 6 -1 Interrupt Acknowledge Timing............. 16 Figure 6 -2 Return From Interrupt Cycle................ 17 Figure 6 -3 Daisy Chain Interrupt Service.............. 17 Figure 7 -1 Method of extending the Interrupt Priority Daisy Chain............................. 18 Figure 7 -2 Example of I/O Interface...................... 19 Figure 7 -3 Control Mode Application..................... 21 CHAPTER 1 INTRODUCTION 1.0 INTRODUCTION The Z8O Parallel I/O (PlO) Circuit is a programmable, two port device which provides a TTL compatible interface between peripheral devices and the Z80-GPU. The CPU can configure the Z8O-PIO to interface with a wide range of peripheral devices with no other external logic required, Typical peripheral devices that are fully compatible with the Z80-PIO include most keyboards, paper tape readers and punches, printers, PROM programmers, etc. The Z8O-PIO is packaged in a 40-pin DIP, or a 44-pin PLCC, or a 44-pin OFP. NMOS and CMOS versions are also available. Major features of the Z80-PlO include. One of the unique features of the Z80-PlO that separates it from other interface controllers is that all data transfer between the peripheral device and the CPU is accomplished under total interrupt control. The interrupt logic of the PIO permits full usage of the efficient interrupt capabilities of the Z80-CPU during I/0 transfers. All logic necessary to implement a fully nested interrupt structure is included in the PIO so that additional circuits are not required. Another unique feature of the PlO is that it can be programmed to interrupt the CPU on the occurrence of specified status conditions in the peripheral device. For example, the PlO can be programmed to interrupt if any specified peripheral alarm conditions should occur. This interrupt capability reduces the amount of time that the processor must spend in polling peripheral status. 1.1 FEATURES ( Two Independent 8-Bit Bidirectional Peripheral interface Ports with >Handshake= Data Transfer Control. ( Interrupt Driven Handshake for Fast Response. ( Any One of Four Distinct Modes of Operation May be Selected for a Port including. - Byte Output - Byte Input - Byte Bidirectional Bus (Available on Port A Only) - Bit Control Mode. All with Interrupt Controlled Handshake ( Daisy Chain Priority Interrupt Logic included to Provide for Automatic interrupt Vectoring Without External Logic. ( Eight Outputs are Capable of Driving Darlington Transistors ( All Inputs and Outputs Fully TTL Compatible ( Single 5V Supply and Single Phase Clock are Required. CHAPTER 2 PIO ARCHITECTURE 2.0 OVERVIEW A block diagram of the Z80-PIO is shown in Figure 2-1.The internal structure of the Z8O-PIO consists of a Z80-CPU bus interface, internal control logic, Port A I/O logic, Port B I/O logic and interrupt control logic. The CPU bus interface logic allows the PlO to interface directly to the Z8O-CPU with no other external Logic. However, address decoders and/or line buffers may be required for large systems. The internal control logic synchronizes the CPU data bus to the peripheral device interfaces (Port A and Port B). The two I/O ports (A and B) are virtually identical and are used to interface directly to peripheral devices. The Port I/O logic is composed of 6 registers with hand-shake control logic as shown in Figure 2-2. The registers include an 8-bit data input register, an 8-bit data output register, a 2-bit mode control register, an 8-bit mask register an 8-bit input/output select register and a 2-bit mask control register. The 2-bit mode control register is loaded by the CPU to select the desired operating mode(byte output, byte input, byte bidirectional bus, or bit control mode). All data transfer between the peripheral device and the CPU is achieved through the data input and data output registers. Data may be written into the output register by the CPU or read back to the CPU from the input register at any time. The handshake lines associated with each port are used to control the data transfer between the PIO and the peripheral device. The 8-bit mask register and the 8-bit input/output select register are used only in the bit control mode. In this mode, any of the eight peripheral data or control bus pins can be programmed to be an input or an output as specified by the select register. The mask register is used in this mode in conjunction with a special interrupt feature. This feature allows an interrupt to be generated when any or all of the unmasked pins reach a specified state (either High or Low). The 2-bit mask control register specifies the active state desired (High or Low) and if the interrupt should be generated when all unmasked pins are active (AND condition) or when any unmasked pin is active (OR condition). This feature reduces the requirement for CPU status checking of the peripheral by allowing an interrupt to be automatically generated on specific peripheral status conditions. For example, in a system with three alarm conditions an interrupt may be generated if any one occurs or if all three occur. The interrupt control logic section handles all CPU interrupt protocol for nested priority interrupt structures. The priority of any device is determined by its physical location in a daisy chain configuration. Two lines are provided in each PlO to form this daisy chain. The device closest to the CPU has the highest priority. Within a PlO port A interrupts have higher priority then those of Port B. In the byte input, byte output or bidirectional modes, an interrupt can be generated whenever a new byte transfer is requested by the peripheral. In the bit Control mode an interrupt can be generated when the peripheral status matches a programmed value. The PIO provides for complete control of nested interrupts. That is, lower priority devices may not interrupt higher priority devices that have not had their interrupt service routine completed by the CPU. Higher priority devices may interrupt the servicing of lower priority devices. When an interrupt is accepted by the CPU in Mode 2, the interrupting device must provide an 8-bit interrupt vector for the CPU. This vector is used to form a pointer to a location in the computer memory where the address of the interrupt service routine is located. The 8-bit vector from the interrupting device forms the least significant eight bits of the indirect pointer while the I Register in the CPU provides the most significant eight bits of the pointer. Each port (A and B) has an independent interrupt vector. The least significant bit of the vector is automatically set to a 0 within the PlO since the pointer must point to two adjacent memory Isolations for a complete 16-bit address. The PlO decodes the RETI (Return from interrupt) instruction directly from the CPU data bus so that each PlO in the system knows at all times whether it is being serviced by the CPU interrupt service routine without any other communication with the CPU.  EMBED Word.Picture.8   CHAPTER 3 PIN DESCRIPTION 3.0 PIN DESCRIPTION A diagram of the Z8O-PIO pin configuration is shown in Figure 3-1. This section describes the function of each pin. D7 - DO Z80-CPU Data Bus (bidirectional, tri-state) This bus is used to transfer all data and commands between the Z80-CPU and the Z80-PIO. DO is the least significant bit of the bus. B/A Sel Port B or A Select (input, active High). This pin defines which port will be accessed during a data transfer between The Z80-CPU and the Z8O-PIO. A Low level on this pin selects Port A while a High level selects Port B. Often, Address bit A0 from the CPU will be used for this selection function. C/D Sel Control or data Select (input, active High). This pin defines the type of data transfer to be performed between the CPU and the PlO. A High level on this pin during a CPU write to the PIO causes the Z80 data bus to be interpreted as a command for the port selected by the B/A Select line. A Low level on this pin means that the Z80 data bus is being used to transfer data between the CPU and the PlO Often Address bit Al from the CPU will be used for this function. /CE Chip Enable (input, active Low). A Low level on this pin enables the PIO accept command or data inputs from the CPU during a write cycle or to transmit data to the CPU during a read cycle. This signal is generally a decode of four I/O port numbers that encompass Ports A and B, data, and control. ( System Clock (input). The Z80-PIO uses the standard Z80 system clock to synchronize certain signals internally. This is a single phase clock. /M1 Machine Cycle One Signal from CPU (input, active Low). This signal from the CPU is used as a sync pulse to control several internal PIO operations. When /M1 is active and the /RD signal is active, the Z80-CPU is fetching an instruction from memory. Conversely, when /M1 is active and /IORQ is active, the CPU is acknowledging an interrupt. In addition, the /Ml signal has two other functions within the Z80-PIO. 1. /M1 synchronizes the PIO interrupt logic. When /M1 occurs with out an active /RD or /IORQ signal, the PIO logic enters a reset state. /IORQ Input/Output Request from Z80-CPU (input, active Low). The /IORQ signal is used in conjunction with the B/A Select, C/D Select, ICE, and /RD signals to transfer commands and data between the Z80-CPU and the Z80-PlO. When /CE, /RD, and /IORQ are active, the port addressed by B/A will transfer data to the CPU (a read operation). Conversely, when /CE and /IORQ are active but /RD is not active, then the port addressed by B/A will be written into from the CPU with either data or control information as specified by the C/D Select signal. Also, if /IORQ and /M1 are active simultaneously, the CPU is acknowledging an interrupt and the interrupting port will automatically place its interrupt vector on the CPU data bus if it is the highest priority device requesting an interrupt. /RD Reed Cycle Status from the Z80-CPU (input, active Low). It /RD is active a MEMORY READ or I/O READ operation is in progress. The /RD signal is used with A/B Select, C/D Select, /CE and /IORQ signals to transfer data from the Z80-PIO to the Z80-CPU. IEl Interrupt Enable In (lnput, active High). This signal is used to form a priority interrupt daisy chain when more than one interrupt driven device is being used. A High level on this pin indicates that no other device of higher priority are being serviced by a CPU interrupt service routine. IEO Interrupt Enable Out (Output. active High). The IEO signal is the other signal required to form a daisy chain priority scheme. It is High only if IEI is High and the CPU is not servicing an interrupt from this PlO. Thus, this signal blocks lower priority devices from interrupting while a higher priority device is being serviced by its CPU interrupt service routine. /INT Interrupt Request (output, open-drain, active Low). When /INT is active, the Z80-PIO is requesting an interrupt from the Z80-CPU. A7-AO Port A Bus (bidirectional, tri-state). This 8-bit bus is used to transfer data and/or status or control information between Port A of the Z80-PIO and a peripheral device. A0 is the least significant bit of the Port A data bus. /ASTDB Port A Strobe Pulse from Peripheral Device (input, active Low) The meaning of this signal depends on the mode of operation selected for Port A as follows: 1. Output mode: The positive edge of this strode is issued by the peripheral to acknowledge the receipt of data made available by the PlO. 2. Input mode: The strobe is issued by the peripheral to load data from the peripheral into the Port A input register. Data is loaded into the PIO when this signal is active. 3. Bidirectional mode: When this signal is active data from the Part A output register is gated onto Port A bidirectional data bus. The positive edge of the strobe acknowledges the receipt of the data. 4. Control mode: The strobe is inhibited internally. ARDY Register A Ready (output, active High). The meaning of this signal depends on the mode of operation selected for Port A as follows: 1. Output mode: This signal goes active to indicate that the Port A output register has been loaded and the peripheral data bus is stable and ready for transfer to the peripheral device. 2. Input mode: This signal is active when the Port input register is empty and is ready to accept data from the peripheral device. 3. Bidirectional mode: This signal is active when data is available in the Port A output register for transfer to the peripheral device. In this mode, data is slot placed on the Port A data bus unless ASTB is active. 4. Control mode: This signal is disabled and forced to a Low state. B7- B0 Port B Bus (bidirectional, tri-state). This 8-bit bus is used to transfer data and/or status or control information between Port B of the PlO and a peripheral device. The Port B data bus is capable of supplying 1.5 m @ 1.5V to drive Darlington transistors. B0 is the least significant bit of the bus. /BSTB Port B Strobe Pulse from Peripheral device (input. active Low). The meaning of this signal is similar to that at /ASTB with the following exception: In the Port A bidirectional mode, this signal strobes data from the peripheral device into the Port A input register. BRDY Register B Ready (output, active High). The meaning of this signal is similar to that of A Ready with the following exception: In the Port A bidirectional mode this signal is High when the Port A input register is empty and ready to accept data from the peripheral device.   CHAPTER 4 PROGRAMMING THE PIO 4.0 RESET The Z8O-PIO automatically enters a reset state when power is applied. The reset state performs the following functions: 1 Both port mask registers are reset to inhibit All port data bits. 2. Port data bus lines are set to a high-impedance state and the Ready handshake signals are inactive (Low) Mode 1 is automatically selected. 3. The vector address registers are not reset. 4. Both port interrupt enable flip-flops are reset. 5. Both port output registers are reset. In addition to the automatic power-on reset, the PIO can be reset by applying an /M1 signal without the presence of a /RD or /IORQ signal. If no /RD or /IORQ is detected during /M1, the PlO will enter the reset state immediately after the /M1 signal goes inactive. The purpose of this reset is to allow a single external gate to generate a reset without a power down sequence. This approach was required due to the 40-pin packaging limitation. Once the PlO has entered the internal reset state, it is held there until the PIO receives a control word from the CPU. 4.1 LOADING THE INTERRUPT VECTOR The PIO has been designed to operate with the Z80-CPU using the Mode 2 interrupt response. This mode requires that an interrupt vector be supplied by the interrupting device. This vector is used by the CPU to form the address for the interrupt service routine of that port. This vector is placed on the Z80 data bus during an interrupt acknowledge cycle by the highest priority device requesting service at that time. (Refer to the Z80-CPU Users Manual Section for details on how an interrupt is serviced by the CPU). The desired interrupt vector is loaded into the PIO by writing a control word to the desired port of the PIO with the following format: D7 D6 D5 D4 D3 D2 D1 D0 V7 V6 V5 V4 V3 V2 V1 0 0 in D0 Signifies This Control Word is an Interrupt Vector D0 is used in this case as a flag bit which when low, causes V7 through V1 to be loaded into the vector register. At interrupt acknowledge time, the vector of the interrupting port will appear on the Z80 data bus exactly as shown in the format above. 4.2 SELECTING AN OPERATING MODE Port A of the PlO may be operated in any of four distinct modes: Mode 0 (output mode), Mode 1 (input mode), Mode 2 (bidirectional mode), and Mode 3 (control mode) Note that the mode numbers have been selected for mnemonic significance; ie., 0 = Out, 1 = In, 2 Bidirectional. Port B can operate in any of these modes except Mode 2. The mode of operation most be established by writing a control word to the PIO in the following format: D7 D6 D5 D4 D3 D2 D1 D0 M1 M0 X X 1 1 1 1 Mode Word X=Unused Bit Signifies Modes Word To Be Set Bits D7 and D0 from the binary code for the desired mode according to the following table: D7 D6 Mode 0 0 1 1 0 1 0 1 0 (output) 1 (input) 2 (bidirectional) 3 (control) Bits D5 and D4 are ignored. Bits D3-D0 must be set to 1111 to indicate Set Mode. Selecting Mode 0 enables any data written to the port output register by the CPU to be enabled onto the port data bus. The contents of the output register may be changed at any time by the CPU simply by writing a new data word to the port. Also the current contents of the output register may be read back to the Z80-CPU at any time through the execution of an input instruction. With Mode 0 active, a data write from the CPU causes the Ready handshake line of that port to go High to notify the peripheral that data is available. This signal remains High until a strobe is received from the peripheral. The raising edge of the strobe generates an interrupt (if it has been enabled) and causes the Ready line to go inactive. This very simple handshake is similar to that used in many peripheral devices. Selecting Mode 1 puts the port into the input Mode. To start handshake operation, the CPU merely performs an input read operation from the port. This activates the Ready line to the peripheral to signify that data should be loaded Into the empty input register. The peripheral device then strobes data into the port input register using the strode line. Again, the rising edge of the strobe causes an interrupt request (it has been enabled) and deactivates the Ready signal. Data may be strobed into the input register regardless of the state of the Ready signal if care is taken to prevent a data overrun condition. Mode 2 is a bidirectional data transfer mode which uses all four handshake lines. Therefore, only Port A may be used for Mode 2 operation. Mode 2 operation uses the Port A handshake signals for output control and the Port B handshake signals for input control. Thus, both APDY and BRDY may be active simultaneously. The only operational difference between Mode 0 and the output portion of Mode 2 is that data from the Port A output register is allowed on to the port data bus only when /ASTB is active in order to achieve a bidirectional capability. Mode 3 operation is intended for status and control applications and does not utilize the handshake signals. When Mode 3 is selected, the next control word sent to the PlO must define which of the port data bus lines are to be inputs and which are outputs. The format of the control word Is shown below: D7 D6 D5 D4 D3 D2 D1 D0 I/O7 I/O6 I/O5 I/O4 I/O3 I/O2 I/O1 I/O0 If any Bit is set to a one, then the corresponding data bus line will be used as an input. Conversely, if the bit is reset, the line will be used as an output. During Mode 3 operation, the strode signal is ignored and the Ready line is held Low. Data may be written to a port or read from a port by the Z80-CPU at any time during Mode 3 operation. When reading a port, the data returned to the CPU will be composed of input data from port data bus lines assigned as inputs plus port output register data from those lines assigned as outputs . 4.3 SETTING THE INTERRUPT CONTROL WORD The interrupt control word for each port has the following format D7 D6 D5 D4 D3 D2 D1 D0 Enable Int. AND/ OR High/ Low Mask Follows 0 1 1 1  Used in Mode 3 Only Signifies Interrupt Control Word If bit D7 = 1, the interrupt enable flip-flop of the port is set and the port may generate an interrupt. If bit D7 = 0, the enable flag is reset and interrupts may not be generated If an interrupt is pending when the enable flag is set, it will then be enabled onto the CPU interrupt request line, bits D6, D5, and D4 are used only with Mode 3 operation. However, setting bit D4 of the interrupt control word during any mode of operation will cause any pending interrupt to be reset. These three bits are used to allow for interrupt operation in Mode 3 when any group of the I/0 lines go to certain defined states. Bit D6 (AND/OR) defines the logical operation to be performed in port monitoring. If bit D6 = 1 an AND function is specified and if D6=0, an OR function is specified. For example if the AND function is specified, all bits must go to a specified state before an interrupt will be generated while the OR function will generate an interrupt if any specified bit goes to the active state. Bit D5 defines the active polarity of the port data bus line to be monitored. If bit D5 = 1, the port data lines are monitored for a high state while if D6 = 0, they will be monitored for a low state. If bit D4 = 1, the next control word sent to the PlO must define a mask as follows: D7 D6 D5 D4 D3 D2 D1 D0 MB7 MB6 MB5 MB4 MB3 MB2 MB1 MB0 Only those port lines whose mask bit is zero will be monitored for generating an interrupt is high, the forced state of Ready will prevent input register data from changing while the CPU is reading the PIO. Ready will go High again after the trailing edge of the /IORQ as previously described. CHAPTER 5 TIMING 5.0 OUTPUT MODE (MODE 0) Figure 5-1 illustrates the timing associated with Mode 0 operation. An output cycle is always started by the execution of an output instruction by the CPU. A /WR* pulse is generated by the PIO during a CPU I/O write operation and is used to latch the data from the CPU data bus into the addressed ports (A or B) output register. The rising edge of the /WR* pulse then raises the Ready flag after the next falling edge of ( to indicate that data is available for the peripheral device. In most systems, the rising edge of the Ready signal can be used as a latching signal in the peripheral device if desired. The Ready signal will remain active until: (1) a positive edge is received from the strobe line indicating that the peripheral has taken the data, or (2) if already active, Ready will be forced low one and one half ( cycles after the leading edge of /IORQ if the ports output register is written into. Ready will return high on the first falling edge of ( after the trailing edge of /IORQ. This guarantees that Ready is low when port data is changing. The Ready signal will not go inactive until a falling edge occurs on the clock (() line. The purpose of delaying the negative transition of the Ready signal until after a negative clock transition is that it allows for a very simple generation scheme for the strobe pulse. By merely connecting the Ready line to the strobe line, a strobe with a duration of one clock period will be generated with no other logic required. The positive edge of the strode pulse automatically generates an /INT request if the interrupt enable flip-flop has been set and this device is the highest priority device requesting an interrupt. If the PIO is not in a reset state, the output register may be loaded before Mode 0 is selected. This allows the port output lines to become active in a user defined state.  5.1 INPUT MODE (MODE 1) Figure 5-2 illustrates the timing of an input cycle. The peripheral initiates this cycle using the strobe line after the CPU has performed a data read. A low level on this line loads data into the port input register and the rising edge of the strobe line activates the interrupt request line (/INT) if interrupt enable is set and this is the highest priority requesting device. The next falling edge of the clock line (() will then reset the Ready line to an inactive state signifying that the input register is full and further loading must be inhibited until the CPU reads the data. The CPU will in the course of its interrupt service routine read the data from the interrupting port. When this occurs, the positive edge from the CPU /RD signal will raise the Ready line with the next low going transition of ( indicating that new data can be loaded info the PIO. If already active, Ready will be forced low one and one-half ( periods following the leading edge of /IORQ during a read of a PIO port. If the user strobes data into the PIO only when Ready. 5.2 BIDIRECTIONAL MODE (MODE 2) This mode is merely a combination of Mode 0 and Mode 1 using all four handshake lines. Since it requires all four lines, it is available only on Port A. When this mode is used on Port A, Port B must be set to the Bit Control Mode, The same interrupt vector will be returned for a Mode 3 interrupt on Port B and an input transfer interrupt during Mode 2 operation of Port A. Ambiguity is avoided if Port B is operated in a polled mode and the Port B mask register is set to inhibit all bits. Figure 5-3 illustrates the timing for this mode. It is almost identical to that previously described for Mode 0 and Mode 1 with the Port A handshake lines used for output control and the Port B lines used for input control. The difference between the two modes is that, in Mode 2, data is allowed out onto the bus only when the A strobe is Low. The rising edge of this strobe can be used to latch the data into the peripheral since the data will remain stable until after this edge. The input portion at Mode 2 operates identically to Mode 1. Note that both Port A and Port B must have their interrupts enabled to achieve an interrupt driven bidirectional transfer. The peripheral must not gate data onto a port data bus while /ASTB is active. Bus connection is avoided if the peripheral uses /BSTB to gate input data onto the bus. The PIO uses the /BSTB low level to latch this data. The PlO has been designed with a zero hold time requirement for the data when latching in this mode so that this simple gating structure can be used by the peripheral. That is, the data can be disabled from the bus immediately after the strobe rising edge.  5.3 CONTROL MODE (MODE 3) The control mode does not utilise the handshake signals and a normal port write or port read can be executed at any time. When writing, the data will be latched into output registers with the same timing as Mode 0. ARDY will be forced low whenever Port A is operated in Mode 3. BRDY will be held low whenever Port B is operated in Mode 3 unless Port A is in Mode 2. In the latter case, the state of BRDY will not be affected. When reading the PlO, the data returned to the CPU will be composed of output register data from those port data lines assigned as outputs and input register data from those port data lines assigned as Inputs. The input register will contain data which was present immediately prior to the falling edge of /RD. See Figure 5-4. An interrupt will be generated if interrupts from the port are enabled and the data on the port data lines satisfies the logical equation defined by the 8-bit mask and 2-bit mask control registers. Another interrupt will not be generated until a change occurs in the status of the logical equation. A Mode 3 interrupt will be generated only if the result of a Mode 3 logical operation changes from false to true. For example, assume that the Mode 3 logical equation is an OR function. An unmasked port data line becomes active and an interrupt is requested. If a second unmasked port data line becomes active concurrently with the first, a new interrupt will not be requested since a change in the result of the Mode 3 logical operation has not occurred. If the result of a logical operation becomes true immediately prior to or during /M1 an interrupt will be requested after the trailing edge of /M1.  CHAPTER 6 INTERRUPT SERVICING 6.0 INTERRUPT SERVICING Some time after an interrupt is requested by thin PlO, the CPU will send out an interrupt acknowledge (/M1 and /IORQ). During this time the interrupt logic of the PIO will determine the highest priority port which is requesting an interrupt. (This is simply the device with its Interrupt Enable input high and its Interrupt Enable Output low). To insure that the daisy chain enable lines stabilize, devices are inhibited from changing their interrupt request status when /M1 is active. The highest priority device places the contents of its interrupt vector register onto the Z80 data bus during interrupt acknowledge. Figure 8-1 illustrates the timing associated with interrupt requests. During /M1 time, no new interrupt requests can be generated. This gives time for the Int Enable signals to ripple through up to four PIO circuits. The PIO, With IEI high and lEO Low during /INTA, will place the 8-bit interrupt vector of the appropriate port on the data bus at this time. If an interrupt requested by the PlO is acknowledged, the requesting port is under service. lEO of this port will remain low until a return from interrupt instruction (RETI) is executed while IEl of the part is high. If an interrupt request is not acknowledged, lEO will be forced high for one /M1 cycle after the PlO decodes the opcode >ED. This action guarantees that the 2-byte RETI instruction is decoded by the proper PlO port (Figure 6-2). Figure 6-3 illustrates a typical rested interrupt sequence that could occur with four ports connected in the daisy chain. In this sequence Port 2A requests and is granted an interrupt. While this port is being serviced, a higher priority port (1B) requests and is granted an interrupt. The service routine for the higher priority port is completed and a RETI instruction is executed to indicate to the port that its routine is complete. At this time the service routine of the lower priority port is completed.    EMBED Word.Picture.8  CHAPTER 7 APPLICATIONS 7.0 EXTENDING THE INTERRUPT DAISY CHAIN Without any external logic, a maximum of four Z80-PIO devices may be daisy chained into a priority interrupt structure. This limitation is required so that the interrupt enable status (IEO) ripples through the entire chain between the beginning of /M1 and the beginning of /IORQ during an interrupt acknowledge cycle. Since the interrupt enable status cannot change during /M1, the vector address returned to the CPU is assured to be from the highest priority device which requested an interrupt. If more than four PlO devices must be accommodated, a Iook-ahead structure may be used as shown in Figure 7-1. With this technique, more than thirty PlOs may be chained together using standard TTL logic.  7.1 I/O DEVICE INTERFACE In this example the Z80-PIO is connected to an I/O terminal device which communicates over an 8-bit parallel bidirectional data bus as illustrated in Figure 7-2. Mode 2 operation (bidirectional) is selected by sending the following control word to Port A: D7 D6 D5 D4 D3 D2 D1 D0 1 0 X X 1 1 1 1     Mode Control Next, the proper interrupt vector is loaded (refer to CPU Manual for details on the operation of the interrupt). D7 D6 D5 D4 D3 D2 D1 D0 V7 V6 V5 V4 V3 V2 V1 0 Interrupts are then enabled by the rising edge of the first /M1 after the interrupt mode word is set unless that /M1 defines an interrupt acknowledge cycle. If a mask follows the interrupt mode word, interrupts are enabled by the rising edge of the first /M1 following the setting of the mask. Data can now be transferred between the peripheral and the CPU. The timing for this transfer is as described is Section 5.0.  7.2 CONTROL INTERFACE A typical control mode application is illustrated in Figure 7-3. Suppose an industrial process is to be monitored. The occurrence of any abnormal operating condition is to be reported to a Z80-CPU based control system. The process control and status word has the following format: D7 D6 D5 D4 D3 D2 D1 D0 Special Test Turn on Power Power Failure Alarm Halt Processing Temp Alarm Turn Htrs On Pressure on System Pressure Alarm The PIO may be used as follows. First Port A is set for Mode 3 operation by writing the following control word to Port A. D7 D6 D5 D4 D3 D2 D1 D0 1 1 X X 1 1 1 1 Whenever Mode 3 is selected, the next control word sent to the port must be an I/O select word. In this example we wish to select port data lines A5, A3. and A0 as inputs and so the following control word is written: D7 D6 D5 D4 D3 D2 D1 D0 0 0 1 0 1 0 0 1 Next the desired interrupt vector must be Loaded (refer to the CPU manual for details): D7 D6 D5 D4 D3 D2 D1 D0 V7 V6 V5 V4 V3 V2 V1 0 An interrupt control word is next sent to the port: D7 D6 D5 D4 D3 D2 D1 D0 1 0 1 0 0 1 1 1 Enable Interrupts OR Logic Active High Mask Follows Interrupt Control The mask word following the interrupt mode word is: D7 D6 D5 D4 D3 D2 D1 D0 1 1 0 1 0 1 1 0 Now, if a sensor puts a high level on line A5, A3 or A0, an interrupt request will be generated. The mask word may select any combination of inputs or outputs to cause an interrupt. For example, it the mask word above had been: D7 D6 D5 D4 D3 D2 D1 D0 0 1 0 1 0 1 1 0 then an interrupt request would also occur if bit A7 (Special Test) of the output register was set. Assume that the following port assignments are to be used. E0H = Port A Data E1H = Port B Data E2H = Port A Control E3H = Port B Control All port numbers are in hexadecimal notation. This particular assignment of port numbers is convenient since A0 of the address bus can be used as the Port A/B Select and A1 of the address bus can be used as the Control/Data Select. The Chip Enable would be the decode of CPU address bits A7 through A2 (111000). Note that if only a few peripheral devices are being used, a Chip Enable decode may not be required since a higher order address bit could be used directly.  EMBED Word.Picture.8  CHAPTER 8 PROGRAMMING SUMMARY 8.0 LOAD INTERRUPT VECTOR V7 V6 V5 V4 V3 V2 V1 0 8.1 SET MODE M1 M0 X X 1 1 1 1 M1 M0 Mode 0 0 1 1 0 1 0 1 Output Input Bidirectional Bit Control When selecting Mode 3, the next word must set the =I/O Register: 8.2 SET INTERRUPT CONTROL Enable Int AND/ OR High/ Low Mask Follows 0 1 1 1  Used in Mode 3 Only  If the "mask follows" bit is high, the next control word written to the port must be the mask: MB7 MB6 MB5 MB4 MB3 MB2 MB1 MB0 MB = 0, Monitor bit MB = 1, Mask bit from being monitored Also, the interrupt enable flip-flop of a port may be set or reset without modifying the rest of the interrupt control word by using the following command: Enable Int. X X X 0 0 1 1 Page PAGE 19 of NUMPAGES 22 ZILOG Z80 PIO USER=S MANUAL ,8=1nj{UssG V W ] c  78klLM34km&&&&&&&Ի櫞j5OJQJUmH j|IA CJUVhmHnHj5OJQJUmH  jCJOJQJmH CJOJQJmH CJOJQJmH 5OJQJmH  OJQJmH 5CJOJQJmH :A2no7ij|T 0 ` ` ` P ` P `A2no7ij|TUt6st G W d ) ^  K + a bc67jk#KL23lmMN_`JK"""%%  dTUt6st G W d ) ^  K  ` P ` + a bc ,3s C S#"- ,3s C S#" p `  `  ` ` `67jk#KL23 ,@ P `0 " & \ , l<   & \ , l<   ,3s C S#"3lmMN_`JK"""%%&&&$ ` 0 ` ` p ` ,@ P `0 "%&&&&&''|'}'5(6(h)i)C+D+q,r,--...-/./B2C2@3A3h4i45|@~@@@@@@@&A'AkAlAAA,B-BaBbBBBIDJDDDDDDxGyGzG}G~GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG    ^&&&&'}''''''6(>(?(Q(i)p)q))))D+G+H+T+r,s,t,,---(-)-../3/4/V/C2F2G2i2A3D3E3X3i4l45555غحġ؜6CJOJQJ CJOJQJ5CJOJQJOJQJ56CJOJQJmH  jF5CJOJQJmH CJH*OJQJmH 6CJOJQJmH 5CJOJQJmH CJOJQJmH 5CJOJQJmH 5OJQJmH j5OJQJUmH 4&&&''|'}'5(6(h)i)C+D+q,r,--...-/./B2C2@3A3h4i4 ` ` p `i4555g6h6Q7R777880919991:2:::x;y;; ,K[ +k; ! ,EU %e5! `5h6m6n6y6R7X7Y772:6:7:H:="=(=.=Q>V>W>>d?h?r?t?|@}@@@@@@@@@DDDDwGxGHHHIIJ KKK#K&KDKJKKKKK;UUWWWWWX񿹿OJQJ CJOJQJ CJOJQJ 5OJQJ5CJOJQJj45CJOJQJU5CJOJQJjH5CJOJQJU6CJOJQJ5CJOJQJ CJOJQJA;;<<==P>Q>>>c?d???|@~@@@@@@@&A'A p ` ,K[ +k; ! `'AkAlAAA,B-BaBbBBBIDJDDDDDDxGyGzGd$ 0 ` ,4tD T$! `, ,4tD T$!zG}G~GGGGGGGGGGGGGGGb$$xִ  B6sd$ $:$ `GGGGGGGGGGGGGGGGG $:$ `d$GGGGGGHHHIIdJ{smgggggg `  `@ `" ) R" b2rB!b$$xִ  B6s GGGGGHH T;UX?XFXKXLXQXTXUX[X_X`XeXmXnXpXqXsXtXvXwXyXzX{X|X}XXXXX bdJeJJJJJJJJJJJJJJJJJJJ $:$ `d$ `JJJJJJJJJJJKKKKKKl $:$ `d$b$$xִn K K K KKKK$K%K&KEKFKGKHKd$b$$xִn  $:$ ` HKIKJKKKKKKKKK} :$ ` $:$ `d$ `b$$xִn  KKKKKKKKKKKKKKKKK :$ `$ ` $:$ `$$ `d$,$$x4Fn KKKPLQLMMvOwOQQT T T;U_P_l_aabb0c1cccffffGhphqhiiljmjjjktquqvqqxxx1xJxLxސji5CJOJQJUj7CJOJQJUj(OJQJUjQoOJQJUjXOJQJU jFjCFOJQJU jFOJQJ 5OJQJ5CJOJQJ CJOJQJ CJOJQJOJQJ CJOJQJ3=X>X?XFXKXLXQXTXUX[X_X`XeXmXnXpX $:$ `$$ `d$b$$xִV .dpXqXsXtXvXwXyXzX{X|X}XXXXXXXb$$xִV .d $:$ `d$XXXXXXX\\v]w]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^ ^ ^^^^^^=_>_Q_R_k_l_`abc:eeffffffFhGhjkkllootqvqqq_Q_R_k_l_`abc:eeffffffFhGhjkkl 0 `$ ` ` p ` `llootqvqqq?BCDFGIJLMOPRSUVXY[\]^_`abcderstuvwx ! bBCD5 ! x/ӆԆՆ%(#DGh?܊!Tɋ[>{ٍڍAüñêȕÎüêÎü5CJOJQJ CJOJQJ5CJOJQJj5CJOJQJU CJOJQJjCJOJQJU CJOJQJOJQJ 5OJQJjԤ5CJOJQJUj.IA CJUVhmHnH5CJOJQJjN5CJOJQJU4+./2367:;>?BCDFGIdb$$xִ  B6sd$ $:$ `IJLMOPRSUVXY[\]^_hb$$xִ  B6s $:$ `d$_`abcderstuvwx `b$$xִ  B6sd$ $:$ ` :$ `d$ ` !"%&)* :$ `d$b$$xִ  B6s!"%&)*-./UVӆՆ "#&'(056;>DEKSYZ_jkpvw|$%&)*-.12569:=>ABEFGJKNORSVWZ[^_bcfghA c*-./UVӆՆ u $:$ `d$ ` `b$$xִ  B6s :$ ` "#&'(b$$xִV .d& $:$ `d$(056;>DEKSYZ_jkpvw|d$ $:$ `$$ `$%&)*-.12569 :$ `d$ ` `b$$xִV .d&9:=>ABEFGJKNORSVWb$$xִ  B6s :$ `d$WZ[^_bcfghABCFG ` `b$$xִ  B6sd$ :$ `ABCFGJKNORSVWZ[^_bcdghklopstwx{|݊ފߊ  !UVWZ[^_bcfgjknorsvwxz{}~ cGJKNORSVWZ[^_bcdgb$$xִ  B6sd$ :$ `ghklopstwx{|b$$xִ  B6s :$ `d$݊ފߊ :$ `d$ ` `  :$ `d$b$$xִ  B6s !UVWZ[^_bcfuuuu $:$ `d$ ` `b$$xִ  B6s :$ ` fgjknorsvwxz{}~db$$xִSc s $:$ `d$ȋɋ !$%(),-014589<=@ABDEGHJKMNPQSTVWYZ[?@ADEHILMPQTUXY\]`abdeghjkmnpqstvwy ch|$ ` :$ `b$$xִSc sd$ $:$ `ȋɋ `b$$xִSc s$ `d$ :$ ` !$%(),-014589<=@ $:$ `d$ `@ABDEGHJKMNPQSTVWd $:$ `d$b$$xִ  B6sWYZ[?@ADEHILMPQTd$ `b$$xִ  B6s $:$ `TUXY\]`abdeghjkmndb$$xִ  B6s $:$ `d$npqstvwyz{ߍ-?~~p ` `b$$xִ  B6sd$ $:$ `yz{ߍ-?Tij@A]|}ǐȐɐ̐͐АѐӐԐ֐אِڐܐݐߐ !-./pqr  b?Tij@A]|} $:$ `d$ p ` `p `ABYZ[\]{ƐrˑߑLWz{ĿĿĿĿ OJQJmH mH 5CJ OJQJmH 5CJ OJQJmH OJQJmHnHjOJQJU CJOJQJ CJOJQJOJQJ 5OJQJ5CJOJQJjCJOJQJUj IA CJUVhmHnH CJOJQJjqCJOJQJU(ǐȐɐ̐͐АѐӐԐ֐ `b$$xִ  B6s $:$ `d$֐אِڐܐݐߐ `b$$xִ  B6s $:$ `d$ !-$ ` $:$ `$$ `d$,$$x4F1y :$ `-./pqr$$ ` $:$ `d$ `+$$xF1y‘đőǑȑɑʑˑԑHIJNOSTXY]^bcghlmqrsJKLXY[\^_abdeghjkmnopqrstuz  Q‘đőǑȑɑʑˑԑ$$ `b$$xִRb rd$ $:$ `HIJNOSTXY]d$ `b$$xִRb r $:$ `]^bcghlmqrsJ~~p ` `b$$xִRb r $:$ `d$JKLXY[\^_abdeghjkm $:$ `d$ `mnopqrstuytrrd P ` $& #$B#! ` `b$$xִRb r ! `+0P. A!"#l$l%ll+0P. A!"#l$l%ll+0P. A!"#l$l%ll+0P. A!"#l$l%ll. 00P. A!"#n$n%nn+0P. A!"#l$%l. 00P. A!"#l$l%ll+0P. A!"#l$l%ll+0P. A!"#l$l%ll. 00P. A!"#l$l%ll+0P. A!"#l$Q%lQ. 00P. A!"#l$l%ll. 00P. A!"#l$%l+0P. A!"#l$%lDdB  S A? 20×4crwNiD`!0×4crwNiKОE/x[tՙݙGBBbB@HK!"(ʟtAL $YRM f)RsBv)]PV] ]+ RA;3 r_g~~ܙ{ˆ7 i$ iP1ğڳ$߭xG3m@|iueO<\baufg4a.I#EN@\0Q#bW@%,5GɸF?r>xq-y>"">L.'C*Cpa.76϶Z(ʞйTxW+bQG㲺q9!.x  ?xJ^T~edRh*txM8S|mC_Pv/} \olsL14N=50^15=Fil@*5"z 7ï8 >olOb* (p\3I1J4#OIn_Ew&Q!O/_ӊ11M!YQH; '{f/Q6|cธlykfܦ N\9F!GOP;֬X/_;s(|A2(;-َm< ຉJyf4[Jyȳ(v<:4maQFí (/}3Mڜ4:r&49JGvd{͎mZ[k3m-(4%ʝΫf]779s;1[4h/H;9( }F$CO4ےr XHk$\Yl R |^ b#>~cDZW"58NJX1"vLΫfnvs8os(/ c@ %98n}ϑO`Cat}L|%wxNr9%18DpLW18P]i 5{8ցk 8P֡Wreݲλk[{'ftָ?ëWr>olY+WzuoMwד-R8`~Л5g8G^eU-kEggW+'K5G|]MVgxeIb/{mWeWq>ZjZ9l?CY<5ZdJYc\re< 52xY.F{y]sqRwB-fwm/sb_bv+jL5jPs/Jp= +(\WGG(=Gكp.s8u:WB*euvRn${'#Kq&c,'Ij&F#MT2&͔&7*+7&^jV6cBmDLۃ̘ٹnEίcp+(O;+3XwEpm=^9G[@YgH@9Tl><,mS=d8dÖMrg 6e,s78@x[ :qPo\-,:`1 珋풑 Tp"THN   =H|A$ }З PH+NNvڍv(<%z=zyb+^ɘ|s-f ڍkŻhEnZkEy ]>O?K=Qpe\~Q8̓F.41E4x,gc&(jv.zgȥ"_Ar{vL5jwhGfJw/'T8;C]jw\2$[sZ]pt!ʀPFl=o9&T0cb ;%(;U,_R5F 1C\.Y Wgj4>&$Ao)JLSq'S\b"ʉh/ 6`@ў9461&{?<ώI0c0t d-s T`?1dybG5#KMq+]hvs' `ps W( z\K-5hWcO~t\K$pQP +]܇"-GnKD6ycCmnKcxʨ\bstiiRG]Gr;3 r_޼#Mrusۚ,z[jח~yRmWm5 gKq?l1}.2Wd@Qb˙]5M$kb\˓[04MG D6X~8 `Kv :Sws\ OAC@}Q{f$+Y2$׃h%ּaMG <!=h2eNuv R<) Y* 586z8JhD/pnNsMG~V[['?L?VhQ<) -*;)ŴEUnc yvb=uP+~~c8!Vw\G9)|ɭn6 tn8h&hjG+n6 \N$n ѴFrۈ!&$ ;<ϋ&Ӭ\ZHn7#fplGZ+` uc5NqRSAr[V7;l9Np=Hn]@NRpf>0F%֍!Hn(qHaBM^<,5@;Zr/i^7-M<5NVy>[5Gc`~ֹAM,:o(+ yMuizlM\+koc @#;M/X':r-/֡ysuYU1G}1zQr({{Tׇߣ-=~=Fw5ȉӐѐ4%ޣaҒ 4?z#w$f*U>SJ [MlF|^n [MiG3"q*q>7n>1➫|bǝ;Em[<礜#R7on-"w}"{xɵd~e乕w|<ޣRˣjQ|y6F-"7죽{g@l΀'U g!.Y㣿rufJ2xpXw~V  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~1?Root Entry F`Jl@l Data WordDocument8ObjectPoolଊl@l_1095361660  FNll1Table"{CompObjhObjectPoolulul [0@0NormalCJOJQJmH <A@<Default Paragraph Font (5ADGLQWahq'F!"]^_`abcdefghijklmnopqrstuvwxyz{|} (5ADGLQWahq'FI  !"  l dC l,2$1A j#Ll' @Da`(  <  #   BCDE(F2     @`  BC DEF"     @`  BBCDEF& 9B 9  @`  BBCDEF& 9B 9  @`   BC DEDFN NENLNN  :::L:; $(@`~   BCDE(F2    @`}   BCDEF"   @`|   BC3DE(F2   33) @`{   BC)DEF" ))  @`z   BCDE(F2     @`y  BCDEF"   @`x  BCDEF&    @`w  BNCaDEF&DN X aX: D@`v  B$CDEF& $   @`u  B$CDEF& $   @`t  B$CDEF& $   @`s  BOCNDEF&EO D ND; E@`r   BCDEDFN X'XXX^  |EKEEE0  $(@`q  B%CDEF& %   @`p  B;CkDEF&1; b kb' 1@`o  B$CDEF& $   @`n  BC;DEF&  1 ;1 @`m  BC:DEF&  1 :1 @`l  B$CDEF& $   @`k   BCDEDFN  YNlll_|YKYYEN $(@`j   BCDEDFN lNl lCl XX9 XXW  $(@`i  BCDEF&    @`h  BCDEF&    @`g   BCDEF&    @`fr ! 6e r " 6d b # 2BbCWDEpFzNN D00   11N X Xb0b0b0XDNN1W1DD:N0D' 0DN:<@`c $ BCDEF" @`b % BCDEF&  u u @`a & BECDEF& ;E ;  @`` ' BECDEF& ;E ;  @`_ ( BCDE<FF       $@`^ ) BCDEF&   @`] * BC:DEF&  1 :1 @`\ + BC'DEF&   ' @`[ , BCDE,F6 <wwwwMWWUW#WWWMwwwwHH(H(R(y    DN NN    I??@?_???I    ||SKSBSBI|TITSJSSD;;;    r h h\\\RD7D@M@M$BMBMKD|D| PF < <@`Z - BCDEF&~ @`Y . B1CDEF&1 '  '1 @`X / B1CDEF& '1 '  @`W 0 BC'DEF" ' '@`V 1 BXCNDEF&X NNE NX X @`U 2 BC:DE F*0 :0  00@`T 3 BCDEF"  @`S 4 BNCNDEF&DN;DNN D@`R 5 BC:DE F* : :1  1 :@`Q 6 rBCNDEFN' @`P 7 BCaDE,F6 Xaa :1 '''NX@`O 8 BCXDEF&   XX @`N 9 rBvCNDEFNv'N @`M : BCaDE,F6 '0: a NX0  @`L ; BCXDEF& XXNN X@`K < rBvCNDEFNv'N @`J = BCbDE,F6 '1; b NX1  @`I > BCXDEF& XXNN X@`H ? rBkCNDEFNk0N @`G @ BCaDE,F6 u1:uD a NX1  @`F A BCWDEF& WWNN W@`E B rBlCNDEFNl1N @`D C BCbDE,F6 v1;vE b NX1  @`C D BCXDEF& XXNN X@`B E rBlCNDEFNl'N @`A F BCaDE,F6 v'0v: a MX0  @`@ G BCXDEF& XXNN X@`? H rBlCNDEFNl1N @`> I BCbDE,F6 v1;vD b NX1  @`= J BCXDEF& XXNN X@`< K rBvCNDEFvvN'v @`; L BCaDE,F6 Xaa :1 '('NX@`: M BCXDEF&   XX @`9 N rBvCNDEFvvN1v @`8 O BCbDE,F6 Xbb D; 1(1NX@`7 P BCXDEF&   XX @`6 Q rBvCaDEFvva0v @`5 R BCuDE,F6 kuu D: 1:ak@`4 S BCkDEF&   kk @`3 T rBvCNDEFvvN'v @`2 U BCaDE,F6 Xaa :1 '('NX@`1 V BCXDEF&   XX @`0 W rBNCuDEFNu @`/ X BbCDE,F6 Xb b 1~'~  'aN X@`. Y BXCDEF& XX  @`- Z rBNCkDEFNkk'Nk @`, [ BbCDE,F6 u' 1; buNu1u @`+ \ BXCDEF&X XNNX @`*r ] 6) r ^ 6( r _ 6' r ` 6& r a 6% r b 6$ r c 6 #  r d 6 "  r e 6 !  r f 6    r g 6   r h 6 r i 6 r j 6 r k 6 r l 6 r m 6 r n 6 r o 6 r p 6 r q 6 r r 6 r s 6 r t 6 r u 6 r v 6 r w 6 r x 6 r y 6  r z 6    r { 6!  !r | 6"  "r } 6#  # ~ rBOCuDEFO(u @`  BbCDE,F6 Xb b :1'  1bN X@`  BXCDEF& XX  @`  rBNCuDEFN'u @`  BbCDE,F6 Xb b ;1'  1bO X@`  BXCDEF& XX  @`  rBXCuDEFX'u @`  BlCDE,F6 bl l ;1'  1bX b@`  BbCDEF& bb  @`B S  ?  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ?LSt ?Vt ILt ?9 St ?C t I9 t ?1 St ?; t~ I1 t}> t|\Ot{\vtz~ ,b ty0-  txu7#twDWtvmmtu  tt>o ) ts>  tr>^ d tq>)tp>kto>dtno wtm s u "tl H tk d tjn <C ti  th kb tg  tf{s te<tdctc`` tbR`ta  t`j  t_(Wt^?nj t]?2t\ t[ ; tZ E tY J ]tX J tW S tV)'tU)0tT'tS)rtR)|tQrtPJ ) tOJ ) tNT  tM ) tL ) tK  tJ1T E tI1J  tH;T  tG1; E tF12  tE;;  tD1EtC1tB;tAEX0t@E0t?O't> t t= Kt t< Bj t;t:Kt9B t8t7  t6t5 t4` t3M`t20 j t1 `` t0M `C t/ t. V i t-t,: t+{  t*T  t)d J x E t(d J 9 O t' Bt& NBbt%X%t$%t# lVt" E t! E t %t  t  tqd!b taHtt0tt8Kt0t tH a tT  t{  tO b t  t V t ; t  t   t )Rt )\t d x t d 9 t3Hh t Kt 0 KC t8K t8 t t@xl9@GTimes New Roman5Symbol3& Arial71Courier?5 Courier New"1h-jƖ-j$0 Steve Woodall Steve Woodall  !"#%  FMicrosoft Word Picture MSWordDocWord.Picture.89q  FMicrosoft Word Picture MSWordDocWord.Picture.89q  FMicrosoft Word Picture MSWordDocWord.Picture.89q Oh+'0WordDocument SummaryInformation( DocumentSummaryInformation8_1095354158  F>l߳lY bjbjWW ==G] w.*****gwgwgwgwiwiwiwiwiwiw$xz^wgwg|gwgwgwwgw**a*gwgwgwgw**gwgwgwgwgwgwJlgw*FjHlgwgw +5V GND CPU Interface Data Bus PIO Control Lines 8 8 CPU Bus I/O Internal Logic Control Internal Bus Interrupt Control 3 Interrupt Control Lines Port A I/O Port B I/O 8 8 Data or Control Handshake Data or Control Handshake Peripheral Interface Figure 2-1. PIO Block Diagram  248:=?CEIKNPTVWYZ\kmvx5B*CJOJQJhmH nH 5B*CJ OJQJhmH nH OJQJjOJQJUmHI      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdddefghijklmnopqrstuvwxyz{|}~ 23489:=>?Cd349:>?DEJKOPUVXY[\lCDEIJKNOPTUVWXYZ[\klmvwx'lmwxN N!n"O#$% Oh+'0x   ( 4 @ LX`hpssSteve Woodallotev Normal.dotlSteve Woodallo2evMicrosoft Word 8.0@F#@ԇJ@l@̵=l      !"#$%&'()*+,-./0123456789:;<=>BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ՜.+,D՜.+,, hp|  N/Aj  Title 6> _PID_GUIDAN{D15C7602-D896-11D6-A416-E83388DAD77C} .P>{b*{'2cWt+.3tJ:[X %7Ol%}ֱRMc%^h~#8.+;HXk#NFGOϖ^="4F\"8>]HlgP1ESb*y%~21FՖ!>] 'ruAWBĬNNٯcwnꊥO._fzqnY[Bi2Ά}tZ\ܲ܎vl2s̩9S>;;}-zNXzafްᙼ\TYSUq@:$oֻ/z:Z;Gn t7o}U:n$\w5/`s԰zEb[1$]%.c5x|>AY{Q7u*DyAiuj>uY6@Otxg,+5k=ʆyuc䕹 7(@/CF=V DdB.`  c <AFig 2-2.wmf2  ["wVS_2(O`! ["wVS_2(O&#FsxpTWn tJ)TlL[)((t1_RK.ɚsiIB8`QLu;1$@b"͏ &ɹs{}R$x1R@MfRH;qƺ{ݴ@kN)ϙ(qMLO)w I'=e" dmI`T1c,쑏iIنl1nPr\6F7t[)IUGƃX2"l51̿~,2hl9K,8'd@UM ,-mH"$}هO{ӌNl[tз1.0F'~1>ׅ.l1nc,r !=+h~씷;WWFBAh?`v;-JuR~c<ʌbTɴw;pQFv9y3F?cLSUGiH i(7JMK&_I2Fte 3sb)sPc%YT@d7%&OQjϯJ[h́3J=t紞fsu0>z+VrPWOg>Oie6*PNS:c)>0ÌϯOv(l+1,+1 \߳[l8>/d$d?;/c~xuʙT~NgWup5ax7_]]wN_Zm\ 2VEzv3 H* pnqԸqqpnD)=.?vn8y \6oJm MLtc|ϝ?Rxsz,iiN4RѺ$wk.lJ.P-o O|k8k]lNL0 yg+.VD˺XOY9f~\˩)e|jst]cL^eBC=퐥9 Iblzgz TwƩ.=㬊5ƪO`Jo+y>PoyMJFGzSi~)v/}CZ' coەji{Q 5v#?2DdB.`  c <AFig 3-1.wmf2/AWG؋s`!/AWG؋s>sFsx\ktTU>&H*-tlHRI `@@ $&!na@11$X>xV\K3.jWuתZs>>֭$bҌIjŘ~&$Om1)h9o{N3$)cz{{#blDhvfhdF]e Noxs9H+$:CT'%m pGh?C~m [$QhG1.ݓ)~m6ƛ180@HgdL5 "1Nxǣ 38X5!$ ^=L˃؃9!F{T8?lr>~>g&rnLw`|zfæ;}~a妌9YЯmm6IEgL0W~hgqNffC7kWܗK_5kW}~UEo zX-1sN_=ׇhuarNcZ[Ӫ׌ܛP&׌v5ƫl3za+_uszq}c~s3zC91]W5ҧo3r߄o~nx F`7嶘UsvCݨ俇c kv7zvBc) $vZ®"2LcOدVh'$OyI9ȻUR tAvZ\7:XvNcP.uCNډMcC+֎i;ܟEE厠=Qg4G+4)gўb63ӿzc~Oz#끁rNc?E4}z+AqX^?; ;TX3a<~\K_/̇=;PpIA!#E25w1K^=eBha}z gcsk8U0b8װ+IͤOW-_ c\O^X u5UCZÖACN5\ˉ kXku5l-9v'Ρsz tZ }z fPun5\[5\[ -nhhwqN@L>k`:m9\ j]86=kWN[CYVhqn;l [kYb o^X m;}zCہgqa-8[16cfbi[ӿE+4܋vk^톆{#1ea}1AZ*{`m^9c1KACwLXtnhu? >c{}~0pO~݈uszIbraA`}ӁIw? xs-6GO hփ@h93x vw 41sN)?ELv><; O9(8Ρ(%&v>AwQw{h}5ȑ=f4sCf$c朶M{Y }|=EgQ/~asg +\6obנJ"I8M__~+ Yr$IF+#WRkiO_e2`01\__9X`Xհ+Qh&vN_jbO_ajp#ڛ0I___:`o:}-j`qa79} cpb_0""X1EK)֯A18 El__䝏q̢mH윾X_LLV#v~+^ L0%֯pV;Sl__ ]X\b ٷK\KL655jPNנUֈkPWE .;A=1,lƵ oB 6݂~} n^56VƸO윾۰~1A1(?C{b34j`qzPh;sX1A }&);irޅkL󟦌`M1r9܅M!h9Tg?م.~wK;.or= #NnI!hw\,qmv 8]: A}3?$C0.Ʋsk4]cn/kP| 3OүAoS5@I"c'/39A19Xqj;p;pmǸ]_[&~ 5p$|~أik`A@kcû/v RgwF*'ı~N1Kmo7uhbl#~Ӭpvho:X/u1V\;]krg^ n j گ1>C6F;0=CӯeDYLz%b'J3EViX.nSl9h<}M˥!^p&,yBel؃Lyٴ9yϴnRQ66kcؽ4}0Nư}?e1F!FX>F]T291:M9`BI3<c+1f1O#b[ͽ!AkX6CX|i~[yf^@$b8֯0~ h_6tH9 }¸]_b:4G?8Gvgo3'֧͡ǵI`ON2ksh7/i@&b!֧v#w>ޮ?'/on`hIc¥ƍm_HF`d V8Rsu:?ߵqN_i2w]jt} Yk+6T+ ߘ!~.]3b¿3n ?%C$<:$R#}`M50}eٶlyCSYѦ\?)2 [j4ǯw r!D]vg튬q -],|칯ؼϷW|\j^UW?>7'\=qjS>q0nsTȭ@X%=|S%|O/^+Iodoxw1_ s\c."s'Us'}ܐP97TFa9OY6e?͖zGV}ĩ|mqȦg}KWbϯLJkB33a'64-ill^Y˔l||zO2/#@B3 -_ғ=qJT>$Ǔ砬 ѧsP*%}|ps{>*7OqMmnpn}"ד?-精5/vGL5|eΏ1E9c~_rƽ~779g2U{'̋]+l'+]8Wz<Ɍ'sI'tgqDe$u.s'}*arQe{gIϑqU[OIY|~vTy'w.s=anuhM0s3`'u%+JMR؃F`gV2Dη_`r9'œz .sgVzѡS#5`![Rܯn>ѡSFFsRxypU}j_A`be6 B,^0BBh286q\7tƓ:N 6?Z'Yl'3bĝ6zW@BM߽I!&/w~=s{bY;ɘT`_i/m$8'd;7$ ]t"y'NYD"9Yh]?H&7xvWr퐏swb^pOk"&lZk#b#oc5_jIqE7h,o8_7\gL\-"#hg$b#>-TXnM>I&$hscG,=Wub앹GҠ|Ze<'8[W?Ц3r&Ȝ9sZhPInnr6o^u߲ādjdg={-GV-H6)U$keUsG퍼[6k6kca9,z^#nX>}^߃bדgٺ rFPs^>4g##'bV>oN#'|XE8#/3!9[mM/gqXDNK8/'Ar*u{X;N3~mZiŷuNl:NIPXnG4߂Y%,IRړ Sp Fb0b_ H%GmVi(a m+7k7h,={"us]Ir4]aVqVP Ulȭf4UZj I܊Mmt"w:շfӅE;r1[#~;~6|]N;yOޭ>կ [ f|r6[iS'=q9N=!Osp K/YE-}jUFzPG:aj|&պK`.ܯA4Y?X]Q4chDzB,BK?&}~ m-8!y _c-lUWfV3:&JQ(^b)Z[ JE#[O9}T>f+iWRUVQTm|CY]ZD=}-Al*gLyJQz5_ɻsFj Ӎ[Wv~kѭQؘ^o~vxdK'Fyy78th'7([C\oG=J^ӵ7#ckG-͠ E|]s\ׇfzQ7B7pXz=5\.4xw3O2滝mF=s*G=a{ ~;u؎~yjީbkסk Ek^굋:|z}z{i_^UkOʼF3l?^˼Gm^V?~[ ]y,uEXzmz1oS7/;r_{~9@~!yAAoe{]r::FkSw\Gu֍uqQczr8yk'CYi.?q~13xBmvcMm_Q,=ayY{1KJ~PaUkȹG+$W*zMRy7=^eֵzЫUO? K+mp1DbTTX%E9dhr~E8B#=jqXQJ~YDO+"E_D\9)׼>>S*OHٟXWH4O{b ~)s~/U+Ҹ~ 3 \}DM>NJ}\Oyj/b_BfĀx8~}wG`U#BEӖ$'91 |t9&YrL,7 $ǫ.,@\y39RcF ;]9惻Ms'.1#h36RSwOkq']N\;On5s;[ VS \]{hl68ce*`?a5@ {p "3_}YGKYسa;=+dIk.k2e% =P/y%:s{iPc۸ZW$e3KeT $8"NbO 'Nz)kNc8r"I){v l?SgT&$  &<9ظdNE`!zN0IU,c_d7$if1\/e(kFTFKbA:vdϔN.L2LOwhq6E';Sgk%\j MD"wTS(Z5یE}nEiIR=\OZ%ipY+]?S~Ofjv[5klɻ쾦+}7;:r=< +>{$y^n_Q'IĪ}QY_ث#SHDl }[};ζ@wGIka6>;»ӼxFז7ٸƺM=!jO=sx '3'$.~CQ 1s3$ s6&Kc. >s-9j{+]>s+>s5 WQ{#0<=)g/.h惁0˜ͼ/\\S$yOIGnwΈ]ofEwf^OxcmTYQ|)1I'f xCc29&:?[wbݏ_/oDdB.`  c <AFig 5-1.wmf2 m2uP;F`! m2uP;N+Fs]x tUv9D3 guYcFfW!'I'8:;<`BP#`DviYv]rX( ri+>{s^Em5(nΙJ5zի~q:EΝ;96(_x 8Qc~h IOXs6nPYT/"jk-n tߜ'?jF#X9ojil*uɲa#R ~Ƙy6pU ~LR f`F$RfB@7Q g89kȟz%NFk @q(SpOAJ/mF4oFhNByMF,0(#^(AF|$J!(\/+VvUɤ" MiMuM2`vAk_mXljYc!, 3[ZG.t3KJZa \-~Vcp˶4,AAEr[F> N1\ otuߪ!7A~Dw˼/aؿf|ZfR1rtWOzPp#wm>X萻}3 9nSZy[cA\,y? o_!J+\nv|۸;!wTfOe{ 7 L>n(C wCpwpI0NIr Ar?kt||\#'R,sPkݛRK Mծ/Shm-g$^u ~yF&32EocF/5쥖q_g?cz`6o2_%W%'+Fӓf$5BJ1:%+Ō/B3ׅ.fCz7:w@`wRwE1;6*ty'A$kFA1E}GoC#! /G[fΓ.WFsrRN-um fla3׈Fx|(9%#L*iFS%}% iJrhS$$cjģ7 s9],aaZ&6}A'}<Lyޥ!O}< r#:q֠| cO62=VǏ>bO A7.aڕ#ؒe+Gr_AKu4d2YD>̄,ڳ-hwOn0lfziRﳤgJOjL>q{p?B֧|nQk~t J5*PO,Jc̰8cz-D e66YPZ7Jϔ>>KA&r@{4GœL 3m,/'hksd$ywɞC^vK ϧ}"塯cW$'g<81$a_IƗTAȱx=ġKLIc"v󱟏<ɐr='ů!Gv/6q|K|}ȱ أQg yˍ%Y~ Z.?? ~ars>CM׻; w ZF^xq瀿7nIcCn/w=HKOw;~ˍQFo2r} T+d/&+}UqIOf}2>d~* a/9w*q(~FnssSF\uo# 'GrWQ!߃Ȼr75&qFh RQDjJmS_̦Z˭^[gG4[^Ҍ;GrZK&rШ$7_)uk4JjΣ6Xkw`;smLS6Vm Ó&!v|?#Ʌy ϛ\{2\_U6ڿ,58f<߄&; ^]iQ0gq~?FO_‡ڟ+b-E|o1,$kƞVP|>a>&>6bT#Lj}s#w&]|{'eyYFȝʵs%]_1|/'ɽʥc uYEkT.~ jw>{LΣsYsY *`}affU5 ]&Y~*44 ֯RZVJYa2[442T^`S>RSs1>=9Ļ؋.8)s|.τ|-8\ʛ 7MrrM|T߸;Zn5Nn1o\m`quFlqx|xmsp=F{޹wae&{ ;dte;jƽ Lnwɓ͝SVŽ CÀO)v?L>/KbRvgkb=g<){:w8p sѿ7`c ؍-3"ίW9 _ST 3'I6壀e3y l"_a56TB~-|nu9J,m5Tz{ɑ9>w=|neb}b|6㈭+/嘭6u7lM\lŚ==ZVNOƕӬӬS0ELa@X9~:^Ro{*Qyy4ErϿӺ/wVX&kX$k#q-͆͐w@su GG.WcwUe+36JR"j]hl'O]5ޓs>_Y>&Wsg ^O?CT` }+MVRb) NzG;?1[9\r^oί{*g 롋.luq)YTP㢝syql\_5GSfVrum&ښkDGILgL،MR>ʰ]n]07WфF9Rlb4Sm: (G s9]5t&_}Vv/nN`lw~n]+Vst qmmwk7JwY~ AoB1(}F c\ʡgT4#UxHtu>RL #5 1Ѹߘ(2QW@e? "zhP㛠٨3`&0>f39s6̄*Va[ġSQOGi` 1%BhFcL@?CE ;^Z>>N>{ZR*$RſP-eRHFmŘ憐jR̎ZY꼱++ZqmMF3Ny'ɱ\67 Q)ۄP]*WUGUDV T[z37s{AwUOUFHuc|WSRf\ڎǬ]uŮpWZ׾2mͯ/#zU5âHjɽf,. B4VWx%Vle섙i3`C$TPNEm-6=c~Q]Ej?dx|a#ζ>z܄Bݽrv֢TWCU wo'ѷX>z79g^tԺ–堨+ŽɮJ62cf)~lΌ]堷=#+#{CDBhzfێpGp%Bl >ǏM/ue]]hUjbZ=3nRw&X==yz ϫ v-,7ف-/~AE W6#oȭZl٠.R)NqB7V߬ACy mDtwwv^wBΜ4=3t:tӵNF'Hc^&?? sT/0Kut}~~̤=S/2Bq'2!3 b ~X= QT}BN342P}VƆm6lxOIl۩oÆ'*0~*QpP? ;";c:x}Z%Od 'hPIY7=ñ QeFid|"–t }PD;{N+|_q8V!G8Ü=3gi`eo 6̅ybH蛂 sa0Rk`G6r!bCdl`C.QņȾឌ*YEVjBk jU_Q98s͎ls";9EBGF=dY# KsUc-q̍CFsh&yh[W d W|xt6M3Zl,rj6%VM,mLm*׃c Al!l=̑kߋ"۶k곋:xN8ޤW7YBr>;/2 s~By_T&X{Npc~UK"gkcߵ|;ڷOdv>k%rjX[Նh A};}۸s*pHB!ZF.*\vQD~UuO_ajX #3靴;oϮe)ZV;%6oGw-DWu_1,ԋKM^A b xWXLb/5 +l1Y,zO^lEν~-}#ov/m;X59Q*הT-7VT>R/o5옚WV2䕪epXUf:,fNBXV#3׬2ƗgGF.rљ/ґF@n*ϬƦBa)¶bUbXJUyaUnjy&wrU(3/v ByV#p# ܜ/BF >֢kr(Q,q,6Xl\B>\drt6sMK9L(3TO2`M/}InR3XǘhGb`8𽲌07(2|ƘOq8ƛw$WMߖ)2ռ0ۄIxBʹq5<&ǗXe_991Od)"%:X}ۨ.KzĎ_aeظGbe"kZ?F/F⣑kƏce,-e{0=dzJMeϦ!RL*L2==̐~b~\#' y-uIg}>C P=8}߫}q؇>>ce4QhrH;|?R!z(vqCcnwXxn+kO6!rUS|UcW ZaPBbCh] e rX:`=l7e5<#'-<0W"< ϡcec3l)#yD^ 1 ~xUuv}?+N|[vn޽-xGjlw C"q#Uĕ-o":sU|:?Sv&N? )Sp/*z _>KS}U?5|S>Ψowj>ϻ\TCuK ѵ0X7th1P7Z O'}t"$yɺn/tu_'HBK[,HĪ6p#ֶ)5s: r,*: =' ѣ؞їe~>Mj 0_ķAy> ًAyGs?]A |㿄~wp9􍏯×BO!|'} |&eWb 1-;9 9с3R=g[l嬵%g2QΣ Ffkjș]ߪJKSG <ي@KN(P  ܣ# oBGOPR{G9{[А{Kc&.Y<Ϟ$6[$|^(t`nb/:B'exx|Jn'F<.; ݜݜxrqp%KGξ gU|\gAab 6Ǯ}}vSq7 qޅ8egrX'8 :pFsVI.D|9w՝ч]a^4!]huGM}4clsAK=SY m?_v}L]>Ÿ1y~F'hapG0#KEfsb"Ɇ,aLfTSy+!;.ߍi0ОC ?0ZelFYLVmcO֮[m}-v^ŷ)sO~׎^4Q31{M2 :fߎ^n ȥ7vn7C?y0gwCE;8 9=hh]I[2vZF,e8ӖQt2n[F#HzE%|f-*:= 6;t*:]AnVUYE]VMh*:mſh=;Oo DdB.`   c <A Fig 5-3.wmf2#b{w-v$\-eo`!b{w-v$\-e8Fsx tUOB$ 0ϳ IPd`T@+Җ|UR#$/' HDYպZWkmKaŵtqp>=sTZ|4,UK34GGp9##Nرca*>v>Wp4dpP$/E6?f#grruB6l7B^0qwLzĥ&.g )3qYj*dK;M\ osS!n*䨉K*@S!cM\3r |Ց&TL/JlTJK#U&!3KGLkRo*$ZS)W12$d&!M43 yKJy$yS)O<`*eIMRV;ad38{S[}Tȍ&. {B2q&.}{GJϑ̧m̫w=djcn#N|WX]×K)[o>)w~}Iu/!2+r";)9qodҭJ9(G)CTb-?zu7TtzqL^rQhudӞ\Jtd@ڑ7bQ(]&#NG:Mt: :k,t]q9ěj~`#hfr|fwn!-~_gs>pg|ܛf2Ss-XY;c:ADQ3scf>nfs,_ї2|g_c;dtb՚ʷ"N+z)⸽b֘("mis߶j -;gčm^kug=7c7ҖMm%m༁m^}s.%nlFwH&g<7*F@٭Ĩ'f=w־j}8y)dcč:0,N|$a}{8-{Du}v?ݱ <Uoee_s߾crs6 n|7u6e>Hz: ;9up713rBNs}A2;) &ސ/swkޖSdc{3l߿,?Ow:Y|t nk\f"pJ}tpStJsLW>j2C\1+4v19'پMø5[J%ڇM_zc[`qmY#( '7xXCb]Bs~ևK?}g +ӏ؃º+Og:{Xw9»3rTn4No d-қ$9ndt#jFo`_9~߶V(Grw2YV-f֖ۍik'm|DwQ渽6foʺ~AX`-jM鮓Axؗs埲 n`oQͭAX_nf]1";LƋ3쥽Z}rhYϼIinsr+wx;^m_-ݪ 9{s7קQ6o7˖L}:N6ҾRCߓ'5٫@1l3v71-NjL=gŞԨ[am{Nڮ#;Ne>rct㓴qbݺ;Bְ{WkΓvs7ewy)r7料]Կ$EI;iNv6$9?S{nUHMNsӴsB'áy ? '{Z:K;礋5Kp^xu~߽?2-;A vx_)>#9Ep#"HG 2S43_0Yz YôPǸv"Cu*k: гݠи71I8wFƺs1͌q3̗y8?rّB pQd(ա\`LX~Mԗl_eIWFze "Y{}զ7M?snmkSжZ`-eoLQmzMTzIUf\KZEz^Ao,{G9n6~TnLE.3ir<ͼH"̛lMù1̷1?o,sq,st;y4>2ya|!Y+Y[O!i֝~?´/RMÚ'L{d=zucbi)kw:`'D#ׁ"ch>,mYI.Ӗ5-׎+u}Țƾ'c߽s#x-y-Hs7 g<7LMH.k[.sqqv3QfYff*-]Zus/{Kʤ\&qflF|/˦ ٴ')^//Fb/)<?L ƨS1a Zg8Ԟs4ӎvR[ bϯ,8I1rIS#sSkIHiKϽLxRt弔]DL$'M&FCsojh:fІ1%q>/|/Hq)2 b+tӚsL$a?龃%(ehƋ+-'g:\Iї۬;eNݿ,i?nj x(4O څ?#o~Kѿg/W? =^{#qjmd?ɼ;q~f} ϗn|ٛh/m0&o;ˤqS˼{<ϻ˖/{rށ}1JyzTc9feQo.6 gMeY%& fɉ\nr#W4(༐|ha.7hNOXbb&7rA6}ɦ^V4",4pz794uN.K7uN.M +C?E,Z1TableAZCompObj hObjectPool߳l߳lWordDocument*2 [0@0NormalCJOJQJmH <A@<Default Paragraph Font "%)-15>GPTW[_cfjnquy}> $).38=BQV[`ejo).38=ATEFLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ "%)-15>GPTW[_cfjnquy}> $).38=BQV[`ejo).38=ATW  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUV *    m d l,2$(Iu~ v @`~`( d|| <  #   BCDE(F2    @`  BCDEF"   @`  BCDE(F2    @`  BCDEF"   @`  BCDE(F2    @`   BCDEF"   @`   BCDE(F2    @`   BCDEF"   @`   BCDE(F2    @`   BCDEF"   @`  BCDE(F2    @`  BCDEF"   @`  BCDE(F2    @`  BCDEF"   @`  BCDE(F2    @`  BCDEF"   @`  BCDE(F2    @`  BCDEF"   @`  BCDE(F2    @`  BCDEF"   @`  BCDE(F2    @`  BCDEF"   @`  BCDE(F2    @`  BCDEF"   @`  BCDE(F2    @`  BCDEF"   @`  BCDE(F2    @`  BCDEF"   @`   BCDE(F2    @` ! BCDEF"   @` " BCDE(F2    @`~ # BCDEF"   @`} $ BCDE(F2    @`| % BCDEF"   @`{ & BCDE(F2    @`z ' BCDEF"   @`y ( BCDE(F2    @`x ) BCDEF"   @`w * BCDE(F2    @`v + BCDEF"   @`u , BCDE$F.   @`t - BC|DE$F.  eeq|| @`s . BCDE$F.  qq| @`r / BCDE$F.  qq| @`q 0 BCDEF&    @`p 1 BCDEF&    @`o 2 BCDEF&    @`n 3 BCDEF&    @`m 4 BCDEF&    @`l 5 BCDE$F.  || @`k 6 BCDEF&    @`j 7 BCDEF&    @`i 8 B)CDEF& )   @`h 9 BCDEF&    @`g : BCDEF&    @`f ; BCDEF&    @`e < BCDEF&    @`d = BCDEF&    @`c > BCDEF&    @`b ? BCDEF&    @`a @ BCDEF&    @`` A BCDEF&    @`_ B BCDEF&    @`^ C BCDEF&    @`] D BCDEF&    @`\r E 6[ r F 6Z  G BRCDE$F. RG; @`Y H zBeC|DEFZq-8e|Zq @`X I BCDE F*OCOqD"OO@`W J B-C-DEF"" --" " @`V K BeCZDEF"ZZZDeOZZ@`Ur L 6T r M 6S r N 6R r O 6Q r P 6P r Q 6O r R 6 N  r S 6 M  r T 6 L  r U 6 K  r V 6 J  r W 6I r X 6H r Y 6G r Z 6F r [ 6E r \ 6D r ] 6C r ^ 6B r _ 6A r ` 6@ r a 6? r b 6> r c 6= r d 6< r e 6; r f 6: r g 69 r h 68 r i 6 7  r j 6!6 !r k 6"5 "r l 6#4 #r m 6$3 $r n 6%2 %r o 6&1 &r p 6'0 'r q 6(/ (r r 6). )r s 6*- *r t 6+, +r u 6,+ ,r v 6-* -r w 6.) .r x 6/( /r y 60' 0r z 61& 1r { 62% 2r | 63$ 3r } 64# 4r ~ 65" 5r  66! 6r  67  7r  68 8r  69 9r  6: :r  6; ;r  6< <r  6= =r  6> >r  6? ?r  6@ @r  6A Ar  6B Br  6C Cr  6D Dr  6E Er  6F Fr  6G Gr  6H Hr  6I Ir  6J  Jr  6K  Kr  6L  Lr  6M  Mr  6N  Nr  6O Or  6P Pr  6Q Qr  6R Rr  6S Sr  6T Tr  6U Ur  6V Vr  6W WB S  ?  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~{  t| V< !t}t  t  }tt *Y-t1tMtMt  t  tK C t@ tKt W "tb-tKt b -tyKtKtIKctK{tIcpt{{ty{tt SVt Vtt  t  t t B t~ M  t}   t|}7  t{ M  tzn7  tyB  tx=+ W tw7 o tvfMtun}tttsIc}tr{}tqI-ctp9oton-tn9tm-tl D tk D tjOtisth$tg Zj tf  te=wtdtc<tbb"ta H t`tyt_bt^b@" t]Kbt\it[q 1 tZ W tY id tXbA" tW| M< tVMKtUitTtSotRtQ tP&tOb"}tN| < tMKtLyiDtKxntJtIa6tHxLtGtF wtE tDL]tC@R tB@z R tAL] t@@qRt?fxt>q !t=q  t<qt;f|xt:t9,t8  t7 #t6|t5@t4  t3  ,t2 t1  t0  t/,t.  t-#t,t+axZt*aWet)et(pt'  {t& t%{t$ t#Vt"V t! K t  Kt@t@}ta4xta4Wta xP ta W\ t \ t }g t \ t g t g t r tBtB t M t Mt6t6t a6xt a6Wt axRt aW^t Rt^t  Rt ^t^t it!qt@cdk9c@GTimes New Roman5Symbol3& Arial71Courier?5 Courier New"1h-j-j$0 Steve Woodall Steve WoodallY bjbjWW *==U]   6 6 6 6 6 R <6 ځ. $^Ł oŁ ]a    (  t ,ģl6 6  Port 1A Highest Prioity Channel + HI HI HI HI Port 1B Port 2A Port 2B HI + HI HI HI + HI HI + HI HI HI + HI HI HI HI 1. Priority Interrupt Daisy Chain Before Any Interrupt Occurs. 2. Port 2A Requests an Interrupt and is Acknowledged. 3. Port 1B Interrupts, Suspends Servicing of Port 2A. 4. Port 1B Servie Routine Complete, 'RETI' Issued, Port 2A Service Resumed 5. Second 'RETI' Instruction Issuded on Completion of Port 2A Service Routine IEI IEO IEI IEO IEI IEO IEI IEO IEI IEO IEI IEO Under Service IEI IEO IEI IEO IEI IEO Under Service IEI IEO IEI IEO IEI IEO Service Complete Service Resumed IEI IEO IEI IEO IEI IEO IEI IEO IEI IEO IEI IEO LO LO LO LO LO LO LO Service Complete Figure 6-3. Daisy-Chain Interrupt Servicing IEI IEO IEI IEO HI Service Suspended    !#%')+-/mo')vx{}5B*CJ OJQJhmH nH OJQJjOJQJUmHX      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdddefghijklmnopqrstuvwxyz{|}~d    !"#%&')*+-./mno'()vwx{|}d   "#&'*+./no()wx|}   /1469;>@CEHJMORTWY\^acfhkmoqsuwy{}5B*CJOJQJhmH nH 5B*CJ OJQJhmH nH X      /014569:;>?@CDEHIJMNORSTWXY\]^abcfghklmopqstuwxy{|}d  0156:;?@DEIJNOSTXY]^bcghlmmpqtuxy|}OJQJN N!"#$%SummaryInformation(DocumentSummaryInformation8_1095362571 Fl`ͷl1Tablei Oh+'0x   ( 4 @ LX`hpssSteve Woodallotev Normal.dotlSteve Woodallo2evMicrosoft Word 8.0@@ԇJ@Xl@Xl ՜.+,D՜.+,, hp|  N/Aj  Title 6> _PID_GUIDAN{D15C7601-D896-11D6-A416-E83388DAD77C} [0@0NormalCJOJQJmH <A@<Default Paragraph Font !*38=BFJNRVZ^bjo{TUVWXYZ[\]^_`abcdefghijklmnopqr !*38=BFJNRVZ^bjo{  W dX lsrs,2$?Yfo9߿'0 @RqrrR(  <  # o  BC@ DE(F2 ) )   @ @ 4 ) @`n  BC4 DEF" 4 4  @`m  BC@ DE(F2 ) )   @ @ 4 ) @`l  BC4 DEF" 4 4  @`k  BC? DE(F2 ) )   ? ? 4 ) @`j   BC4 DEF" 4 4  @`i   BCDE F*@`h   BCDEF"   @`g   ZBpC|DEF!!qq eOO88   88Z e ep8p8pOpOeeZq8|8eOZZOZ8O- 8O!eqDH@`f   B"C"DEF"""""" ""@`e  BCDE(F2  @`d  BCDEF&   @`c  jB|CeDEF##ZZ O---  88e e q|"|"|"|-|-qOqZeZOeOe8e8OOOZCe-e"e"- -"OZHL@`b  B!C"DEF"!"!"! !"@`a  BCDE(F2  @``  BCDEF&   @`_  zB|CeDEF%%ZZ O88"""   88e e q|"|"|"|D|D|DqOqZeZ8e8OeDeDe"e"- ""8"OZLP@`^  B!C!DEF"!!!!! !!@`]  BCDE(F2  @`\  BCDEF&   @`[  ZB|CqDEF!!ee Z88   88OOe q|8|8qZqeeeOqOq8q8ZOZZOe8ZO-8"ZeDH@`Z  B!C"DEF"!"!"! !"@`Y  BCDE(F2  @`X  BCDEF&   @`W  ZBqC|DEF!!pp eOO88   88Z e eq8q8qOqOeeZp8|8eOZZOZ8O- 8O"epDH@`V  B"C"DEF"""""" ""@`U  BACDE<FF ++  6AA A A6    $@`T  BC DEF&     @`S   BXCDE,F6  AA MX XXM @`R ! BCyDE,F6 n cc  nyy yn@`Q " BCDE,F6     @`P # rBZC|DEFZ||-Z| @`O $ BqCDE,F6 - 9D qZ9" @`N % BeCDEF&e eZZe @`M & rBZC|DEFZ||-Z| @`L ' BqCDE,F6 - 8D qZ8" @`K ( BfCDEF&f fZZf @`J ) rBOC|DEFO||-O| @`I * BeCDE,F6 - 8C eN-- @`H + BZCDEF&Z ZOOZ @`G , rBCDDEFD"D @`F - BCZDE,F6 "-8 Z De-  @`E . BCODEF& OODD O@`D / rBCZDEFZ-Z @`C 0 BCqDE,F6 -8D q Ze8  @`B 1 BCfDEF& ffZZ f@`A 2 rBCODEFO"O @`@ 3 BCeDE,F6 "-8 e Oe-  @`? 4 BCZDEF& ZZOO Z@`> 5 rBCZDEFZ-Z @`= 6 BCpDE,F6 -8C p Ze8  @`< 7 BCeDEF& eeZZ e@`; 8 rBCODEFO-O @`: 9 BCeDE,F6 -8D e Oe-  @`9 : BCZDEF& ZZOO Z@`8 ; rB|CNDEF||N!| @`7 < BCfDE,F6 Zff 9- "--OZ@`6 = BCZDEF&   ZZ @`5 > rB|CDDEF||D"| @`4 ? BCZDE,F6 OZZ 8- !-!CO@`3 @ BCODEF&   OO @`2 A rB|CODEF||O-| @`1 B BCeDE,F6 Zee C8 ---NZ@`0 C BCZDEF&   ZZ @`/ D BECDEF& 9E 9  @`. E BCDEF&    @`- F BCDEF&    @`, G BCDEF&    @`+ H BCDEF&    @`* I BCDEF&    @`) J B. CDEF& " . "   @`( K B. CDEF& " . "   @`' L BCDEF&    @`& M BCDEF&    @`% N BgCDEF& [g [  @`$ O BCDEF&    @`# P B. CDEF& " . "   @`"" Q BCDEPFZep||e~e*,@`! R BC|DEF& |p e | |@` J S B<CDEdFn  >>>3 (((1<1  48@`r T 6 r U 6 r V 6 r W 6 r X 6 r Y 6 r Z 6 r [ 6 r \ 6   r ] 6   r ^ 6   r _ 6   r ` 6   r a 6 r b 6 r c 6 r d 6 r e 6  r f 6  r g 6  r h 6  r i 6  r j 6 r k 6 r l 6 r m 6 r n 6 r o 6 r p 6 r q 6 r r 6 B S  ?  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnor htq tpu !K to9! tn N tm C tl p tk 8V tjQP*& tiN7 thYtgZtfXv.tetdFTtcFTtbF7T taFPT& t`F TV t_F Tp t^F T t]F T t\) {t[ tZd tYI tX tW7tVEtU' & D tTztSB~tR& K tQ& M tPC q tOC  tN  q tMCo  tLo q tKCJ qa tJCqtIC& < tH& q< tGCtFqtEC<tD,qtC  tBC  tAN  t@) x t?C)  t>N4 x t=9t<CEt;N9t:t9qt8et7+t6q+t5e t4 i t3 qi t2 e^ t1M  t0B q t/M e t.}  t-r q t,} e t+bNdt*Wdt)bYt(N_dt'_dt&SYt%Ndt$dt# Yt" 2vt! Kt  th~th t  tg ! t  t u t}  tfB  t f t qP t}H i tf i t[f< tfq t} +tf+tftqt  t Bt &t &t ZqtZr!t7Mt7Nttt!qt@q9@GTimes New Roman5Symbol3& Arial71Courier?5 Courier New"1h-jƤ-j$0 Steve Woodall Steve WoodallCompObjhObjInfoObjectPool`ͷl`ͷlWordDocumentY bjbjWW ==q]&&&VVVVV bVJf.ffffffffff$xgli^5f&fX$ fff5ffQSffffD&f:HfffffD&f~p\RlVVff Z80-CPU D7-D0 Z80-PIO A15-A0 Address Decoder B/A C/D /CE A0 A1 A2 A3 A4 A5 A6 A7 Port A Bus Spec. Test Turn On Pwr. Pwr. Fail Alm. HALT Temp. Alm. Htrs. On Press. Sys. Press. Alm. Industrial Processing System Figure 7-3. Control Mode Application pqxz $&13>@JLVX^`5B*CJOJQJhmH nH 5B*CJOJQJhmH nH OJQJjOJQJUmHAqyz      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdddefghijklmnopqxyz  $%&123>?@JKLVWXd  %&23?@KLWWX_`X^_`N N!"#$%SummaryInformation(DocumentSummaryInformation81Table6SummaryInformation( Oh+'0x   ( 4 @ LX`hpssSteve Woodallotev Normal.dotlSteve Woodallo2evMicrosoft Word 8.0@@ԇJ@c2l@c2l ՜.+,D՜.+,, hp|  N/Aj  Title 6> _PID_GUIDAN{D15C7603-D896-11D6-A416-E83388DAD77C}      !"#$%&'()*+,-./0345789:;<=>?@A06;'}مe=S0^,2I:SL+]L;׺sN4ԗK32MZY=zSCk7}!=79PAސh?mUy/ۆSkr17a+fІD)׆}Ir=:i>Il1{e+9eNݿQF}qsxK2b,2W#5G<^eGeϴ:\om}'t?WI\K0q8$y`8\ԗ;{g]qE2I!3Jb+9/)9ӫ mN/+x2/DW%eG[uQ޼8PˌWȑ gm\]/ĶZ[JNer9wВR>˖ g9.[K;hd0w 2P 2e G*Eo$eFRvI-j*JZp$ ^mؾ5۟Y&ߐrі8L!`_O?F2%F:~D<7VG m99v̌wn#`8w&wZ) fn|BO׋S՞o*}ؙQw?AϴV{q-ȍM!XἯXel0Or$ugڊ`M+u{_ϳ2$?A[zaVE[S߉ͣ,9̊%;N6+a _~2YiCGt օ>]e ]t6 ?O1pz~dZ;f Xy~n?{K8;*cy’!7kҢTS]c=HnQOIU0RpL,JM.KTK e ( y V /X n@LiAYxΘ vFy DdB.`   c <A Fig 5-4.wmf2[ $؆V(ks\7 l`!/ $؆V(ks\Fs xkpU׺ $ >Zu:(I R0H%!Kr^{s>*" mERuK4t۾lA 7˄$:|"W\q5agRΝA#n_6F9|%'53 >HNrY'K$"IH&HB Qvj.$$O !)%YMBDd I3N"r  $$sIDIH^%yd3H= qKͷmT$Q!ayDe= K$*IXIT~F’@aO! IT aYK$aE2eʝ$,7\#,ITHX6E*b\*'ݭ^UFE,|ݼn+A-Xބ r|+V˟ttD_5UF5]k^9'UЯjVհ] k| 1T!Tتcb~ sLE? %&=)`B{ZnnMx6@Or}J`.咭9kxYh>}"U6x<FA?b0f~XWEj2H{}|Qo5=?騏FhCà }$YJN2rVVw\qIE ڋ.0P mC d1-aF80xs{sS*!z+( OS]8b= _7MV \XoS$O_J3uXThpA!yFŰQ[F1KBdY#l q]cp=(\[̣{sӺv:|:c|Vuf<Hntj-)Н{I~ll=BzLfbXcjcŘL+@՘ I._ݐ*TrNN }N3L0d 3!0d>.sȣ% y|wPkbh莆 k(1ǥ]?1F~YLq=C.#'v吉fNF;urNu2X5$LNZPddԆ1u25c*k4騳5cdjqFW?kw')`]o%sQF}R(aH"ؓj:& #_УM`|#v|-;@.Tp^v])؍}ni!{<`iiSr@NA9х/8$G=*< ;MF3912ݤ ̡s9ׅV̱;lȼm!Ko6 7ڱXN/7^-ld-L?فWZPGʵ^`Dw Twe3]Nd~Ub?e$ Uzփq9]qD"#@T@e\;M.!ks9.`\@ >c|Aܟ|]',K=ꐛZhGa'nxws~_p4&X/ډ^kd;l$Co~zVSg>te{܍*So//%y)hf%U'Be$aSW]QPIX__{{lޛyg_=s՞w>=%H tYF2p22q)v)K#e9*q%VJyHVz9y2# ?m~6ȢcXJk;J~l,E?ݵ`!{jfIs # .BZ謁X6ǻVV;r?G- ;.:?[3C/_O[6? TMvcɠWcqrENr'OR6s3'N!U'j u{fGjΏGٜ9S ^uRp+cXE>/͝Y"RjD16D3eiOY|ETj_Z۰ޕjj,OJyiYҙz{#7D5,NT_jT7ugME5.pUD^-u{FHzl?7?/홀-~~dٌUzg4 i98m|x6JK=]!^ =oD8ufǝiODJ%6tVΞ8{~^H)]rv2Oӆ?xI4XRdtfߛ$~37)җد^<]nk$oIu߹sMu ~'$l\6~Ӱs?w7fBgtF#u8{1ݾt;Vk9}|ן_In_n7Q52m@'ygr=խrίg=8۷ ,gľw4ވ}030=݀w?$T2 DdB.`   c <A Fig 6-1.wmf2~ PM\<Z {`!R PM\e UifeI&+{i d}L؜@-MO0N ~ #5`n~!~?6D?ƣ95m#c!&k1ȼ6B-q!|Wlwۍ^/vlbӾV+-TNMf&K$<6D!韏.|l^.ؔSc-vѦ<#'ϒvj5;IHJY,DbF|<}TI%\1CUAVWQlE"ew9( N1l}gpd%ٳׯu'8C{52@O5~~ݫ{}L"xJwO<cxsQˊ/.Վy'ޗ>{azz3O^l^jzOQ*Yrbx?ayORA<0n{!C=˳n.نћCu|gV~#f)br\+\XYvdɻ V12oy3ۋB?\)/>7lf5AW*5OPqWcQ둏Ѐg=r62m&DZ^&ʚbq\DWh3}FEt6џB_ GUr+7e=CYGw]%G?6i Ao ׳.Hfމ\L#;1K()JѼbyخⰷGc3mBA.$ 627m u21fk[wd0q. Si NP졸n)~* ghT'Fbp.Ğ.aں "qBLy:91`1xLkq )8o8{BadK9_Ylup|og}#F= ww_{,hWb,KOc1jktvY#Q:HC?s)kRP㤢Igbn uxZ?eO&t4e9| v] ,ƒ8RQ+k`Kpn|EDgR5O201hNA0s=ҽnwa<拨[/N0NN:\K\H+u]P9o?凍Yjc=;@ۿ)IhVlL0C!~vf!;rkDdB.`  c <AFig 6-2.wmf29]؛tGn>xyU y`!9]؛tGn>xyU yŒFsYx}LUǟ燼x/P&T];ps6r֭M:[_i-aӹ8lVm&imV?.%KEKt{A 4K>}ι2S$l 3ãw6Cնi%ln{+-w 2n8dd(C.ݲ##*?wFvKYMgύfJn1XMO{X$&Q5rhwd4S#F2jh&F~o4ʟ(F;O]m\Q#.Y#.FDvqYgDdB#"YF\)ňa#"0荛M4yΨދ4QyEoty҈vFQ9iE#*0ĜӇFDd%#";Ј0ӈu1b36f1613zc{c3ʔHIց_,\Y2y_<}&7eɥJ'RՔ%tRy-eTzΣg, ޓ A}O=}RtAKŽG.ϯi+|W0=J/UjJmzbv=կOcsto7\'9:u+Mt8~N_}ITg^z96(u l"{߫~=N|4c7ȱENx{':4㻋hn!~4ȱ~ݎ=;HЁ2/9s;:oҁAQ#9::qc8ğا^8=@I#It sğrIg]8 or.bDp!@w _?@G@E|?&S {CG/|@%g.*׈W~5r\ :=@ ݭJz=tjg,=>2 ={H9ρ9r̥{Qa^(ķ2(.# XH(btZ-'~%^I|9ȱDBtngRz9VVjoѯF}H7jTs]6́/b0li?U}ktx:{)9B~,NJGR.O,^2{[s9{qs[s\֝|ʒ>>u>uc|suoȧM ?AF 3۞+e:׎d﨎)LF^Ne$fۛ爟:WTq/sԟiY:(_4o)%YɹGE|>#n_W#U +_XźȦU"4j1սtddSI(5nU,9+_۲:5wӮצazUڪHDd)#B  S A? 2\&[};ODn `!\&[};ODn |e67W =Tx\ pu+!l$!@`^aܩMI!C&JR٨`2ttv2lh ؑFe<`L88!Qeccsw|[Nݳ{9ߞ?+8eLrƦ il~_X{;j]McCS1ܷ'5U͙[W.Ӱpw>/62SOp͔gP89OzGuo6 oc#G{ 1O09Kr?bЖ)_cFdڷyG[qxf_~ˈ6;/<}˔R26E*=Ru^.6PhyD[hI[%'iJF~eש\o7B hE m=Th8b|jlnG_|Ŷ7ӡcOs.6ᠭ6:l:߹$:S ȏ0|'JATLsІ /|BhU1a1{sXI͏0|XJۭ> m$BWt*1a)Nm'5?C|*Q~PhJB &,?WTU4JmC}aƃS` :#Jt 0=^VĄ(GO)͏0|w% W;eG-󝓆?ȷO>m}U!+W|ED$!@͖mDLX~b"%W, m4?=#ηrkB#XheB%+*hNm=}a(_0iZ/;h=b6KhE1aq$G͏0|ߗn#\vB^hߗ3mR"&,?[26 S ȏ0&zIePhmv #XyLG6͏0Et#@.(] ˏU:j\5?Œ;X0=hW%bxN`<#Gݚ}aZ>|Ϩ@ۮpVцUG;=?w: }Z5?2[,]>OR.gTBۮHVUІbvV!&,2ITnSKcV͏0Er $V> Uu+fvFu*bcs"߄ڪѩY/xEQ:`<R۪h[ CUlV ˏε\(ֶE/SUx͛WYo|.Ja^ s2hU$a/yܹi %G~7K7U9=/b " <KG]r OCrr' RwvWkRDZ څ? '.FSz:Z[Bkþ-sLw~1"_ϔ xFsv09?(&oֲ` }L~h`@?|ٛ3u50WzJv~B0?Z'j()Ν|.~)GӁpVpbs `{#a_ p%8aQ;vgGp-]$j(,tޖ;v-jKt/]`/. o>!vx v ޡγw lTc.W=>1n۰9EOV'q^>=F1nJk ͱeYd=M< ~y߂X;$_O{h]]t`r{F?; E`:S22˺'6ƛc_kkknٸ>tɁ !耞jq<"rRi(Ԫz3+gR;?gٓ` v#V~ߛ6 b|g+|)8 ˿~ȇ\' `]gyOQ۫D~~aj|C./`{\|鯕B^ Z C]+>n\+,ᕞ>ż_aGF|"`ķ#̫{̌1|9 *2>-b1A~1gRT%1' ?& 9:SVc>.fIǘfy 9.I56JʰsU9rXN-0bƪm:Mb\C}c>Vg=P9*?z_cCc=·8=*'*;"_qzŴ$9uBOcV9u#40T>&=ُ碚w?40T>&fd/y*b<*nG  bFOc~KVg%]G  *=ٮr/oɈP@ed_wsM}1Ccѓ_U{yuN*fČ|@}oR1WĐXu:gr]oi7576n5Vloxzsxm%5גhWUFur֮gv[UZ*$ B&zL5<5=(tw-MOkb߈7n"{z5sTZ+6ݫ"*,ԺFpʱsJMj~O2Լ'PS =\Wixݱ>nڦxZvěZצu wh- ;-q+5ܳFm s[=; u..b>q.VT5 75745kk1 zN{_7h랅)YAaI\[=J g<9;o|Ƌx?yVWJy)YYZѭ_7EBV*nč~D=+ qo|%y7{^)S^)"ϓq20T>&= nj~!1AJ<^MVI ww߱oSֻNջ܎JN{N;c1{/".10SHčhM.10tܩzG|qQMܤ?) DdILdߤ?)Zd|-SFO4zއ%c}L7z{Tn%}/`q @O4zT M0z/=ܠjnnC]c=_Ǎ|#n7}9[Mqv:ˮ[MKw;>/ǡޠߟNb{#eh_[ ]rvPq nDsJ>f'$}WᬁNhtICccv70T>&=}\vwN=Q=ݟ_'1tܩ zV~Cǝڟ'SEq'*A 3~C:AOTz(ޠz>CO4zPoTo0͟ nDԟmN|?0;= &)G|?+f!wed_roOy =ُ7bz[}ʹcn5GɸK L{4 /wK$ԿDOi%zV'{#~Z?ك/`Ӣ MT^ad2;cDdB.`  c <AFig 7-1.wmf2 l"jum(J;{ ``! l"jum(J;{0Fs x pUյ#Z D_dž|*X)ʽ|V2֖S ȫH ևh۩|-_ :WA7>JT3^8\ge:{kϹgJHF"R¿>5OlfJ_lWџȕ+Wh( Fnx>7+fz?sJ?z3g2elһ :҈jE}zR_3~R"1-!؈->1z<7"3# zY(u!1 AF0"zʈv#;RNr$f1)<'Oϋ'ת'OTϧ0 @]Ha>e.<)FLo4}ΧXj117},dD!iU(ayBzmLWzNӌm5 .s>`,d|-$h~ƚȳ ߥm$ۜ9gqq_ z"RJ޴VH)K a5N{='S-k=,c˱+:o5È1oD#{F:C[F#bDs#F|_A<ÈhӯQ#!bbDLoL y\OyFLQ} ,!b[b>->G&sMR̂<ótmO9>#/@[iEo=v\gwB mza-Oq\0v.м4~+oFgq4^U #f$|RR2l^Vϟ%k_m`_Re/ bb>Gs}y}ida}Y̧̾RؗM'=mA 2~=qQfM>j64.ɷ.,.lF0{¸$R~K/ÖkqQ#٨)}5x1}q?9{` ;Encg:CKgu?3htnu}v͜s8k6sk_F Vi꿉}fvT1/W]fɫnq<-&p5򖫕wy-no5ckyݵ5f~?M[ncuՄC.4ps>Nm<3J3q?5sO7qO71-.ZD$h=]簍oHĶ^Is hG3 r4=M7syVrB#{Zo!n%44^6l9Yw`^v7 dl{FUFDuוմjtQe` >]jF!U9ZSF?oT1>/a_`kex:j4y!.׸z-v533 =FUOön/58/z[]DAW"njX;' &l&wF-Le1DK;F-Z((cF-LeObz3>7Ӿ Z:}1M_PǛNUF-TqŴHFM賤ݲ0^j4%r_0z%OEvBH~Y}.G߫z˳'Թ^?g ؛-[?W)yZyU'[g"Xgp5Mx;"XRnwYW%nd_jV[Z3$+| >V񏳏E=zgGҴd_>Ųgug* y/\}gw%$?5Is4k=W4=Sϕ3-/֞+dRTҲ$JKגTT>\B;sҒ}iȞFϕnZ>&I姤%7T~FZ*,I[ӲMRih?c[+dvW~be֠+2niE_z02m6\~w?m?/ٗՀj1@fZ-?Ww/hLѤsg~{\0wWϺhEYs_3zv]qӪ1z__WzGĮslVpm7ˬB}m7Rɉ_nir DdB.`  c <AFig 7-2.wmf2+ T-b2F}L `!T-b2F}LϨ#FsxZkPU^k#q0$@ęLL AЇƤqS"P$:G< M n!dE,zq%dU,z;ӄM <ϳֶ*&,OWb㶶&^3NZq,&YlsV|mO X#eXce<ʏk^klwg7_UpA~/(y"`{>y y)yWh5`c_g E6ض§nCACm`>Ox#AJH $'|8BVOkcEߡV@>UA${6LVLoS=ĺ% BK^ at"/}q cYz6?a~_6'% WxT}$&x hPLr"u4m(\*V*ۘN0`kab\)G ]E0W[зs5t8`3:1ҘcJָ4]׋yF GwGka`!{M^u7~[i~OUl&䘩Eڹ !V hirЌD"qf)9gk;O*ځ 6ۦn7cs?Σ}ԫ@;H==#:΂ Zcøsz8a ;wcA^E|y8=0xzwڇ&o1K3৊ a'54܋P"-2ܵC@;Whb~7JK7?lاm+XwƗ&(Ww ;N<)7}r$׿ F6k.FBX.v2ٱ1YG!$^ &/|{t2_G WM~_ czчjfu㰳 hf\G&qxxDVnu xpO$i R4+[Qͤ?SMn{<*qVD#aӈ/P=^gc4/&m%ss0ɲezto&sD< ?"H eS6vpjʞ(x/|l ŷV_1h!f|1YϠ"b|[{";?y,p;393)~OٗE&#ՓS>2`dGntvhn$nU"ޙblwH6wpgbL43g&qkX$&?B)VF+9@\x7e+>v)A_X6gR.+{xV.߶RP;=vUt6z |BvqҮA9j ]I ՠ|n B{n n=ܨ;2|DUT㷢`}_^G>xVvI.fB԰ѧwu&TRg sCAIafUosǡ@xdt:6-7Y i<\O>U5>IݣV}MRH*vFg=s_ q;HAR;nSҘ˯ͯ߈A4;6'nZLq:qscgQb΄9=&qNܼ-><s71_+o9y=qqg6,nso?ˍ!;.239\l/7 !пίo_?畐Uhp=ߝ^|W)joF9~ȩyˇߣY |odAع_ ZQEz/.,ϋe^Ez|^`s;>y=~ x}8We|GODd)#B  S A?  2zYxr }6jQ~V`!NYxr }6jQ~?67W =xZp}ݽcȲ((,A!R!"$yh1ehDL&$ؙ .-ժДjLg48n ƤotZNB{~wwiN%iAG/O݋HhOtmRJRlݕmSΖΜo6=0iKQ| gxJ+$S96hh'Oܐў\{eAcIB=Spе iZ3P^ZfZ !${ڰhf"=1˜hbVGWnJv6\j$Cm8%-~_^Ч_ >P! 1'b| Q'onðo'T m U.@(b;Ķ A1Q $,~wQ|fj߱|JVfgjFe dW%^b\%G~mT0j<ʿ[+֘Pff%Aauf3ۈJ"6cfT!v#Yg szf_GGp9<,9A{,Y:Xk/_1x~|/Q;ayv¸J۬ 8J%>aw/8MW)1z%Trwrm5@-k ! eS~n /yQ/-[3HwoMK(6g0'ɂ>mϋ*pag^\x9S-N8iL ǑkU`#h;}#A b؞Ghr pcRrCl~XZ,/IMT-|}G1? g~\)f;mYb)֡\/-6`ĬG:\ _7P/c;[!X(%!)h/˃3Kjay)/_&6x~u}&_[ea#"K⶘>1}2%Fu:ί<49lf#SȄEr99,筯xpfJdecƓ(\}:հ (5Oo Jܣ{cz#0ɏW×pwQ:aT$BC ^Ow$ߩS\΂xOs EjеbBhh;^3._<׳qFbBoJ7ĠAB3׉/=;i:1/];ރ=2D'7Z=;ipK\乇ܦRCu+o4kgt+sw;<=#1!׋0-~B_ 6`8ǥx9 zŊDY [ ڎg PT 8Y;UG}%P $w?YU"Q$yJI ~r;έ~>/ N~Zrv_opn 0ɫ$?YcnI?s]Z_ 8ms m'nBYz=PӜbWڹjJP+5-O^x{, g۠O,A \@ pUIaF1~瓳r{ޓsۣ2?C^K1r{1ԏ?/9ɭk,G~rGX lH#b@'W58F8߀Fh/Aq~rhm#oM?^oa_~sC0#V=8Ps^5"F{XAفzx9G5f1xsF~|g,s9J}p+dǼ~?q8M|MY՜$βY~K1Wz e/ɩ> NRS4?lJNZ[8(6zeĸ)S=*R]&@y:\_'_oMy]ow~|?jw⢑k|>Q桞'g٥t)u0|vD5r:Oy|\r.ю!@e~]> P6~x+kUG,Qū6E fds$wMcn}& ɗ#?Q fa=ע9IQٰ0P,ez;Qǵ.D0*03C:GUJ{bgؙhN=*c!C_Q.=o}le Rsd!_V$QK@iڕR~uQAg4m)R>Жhv/k}Wk}!Ǿ]aBT-}y<ĝ?K~!KSj1\N+ *\S=zK}/TobTꝘ8QqCZj齃C+F!.Uw%8+gP+F?ߎ {wgS$E=GeG\1*[fx2CeScNyͧE_!N(υӮ'оڭH W]WtŨt;11]D%4'ߧبQۊq{DzznRwXn't/ע<͟r=]#hnCqhn 347L׼r!4o949>4М:]sBh֡*SkĨ4+Zh^_gFXZ4FwKBs74ϡ9|Bo Y 曮濷cbAjq7wv3Z*eA)Qcbɮ ~H-S!dY+\bHw=W$ sj"]{Z&ye۔^\1su[#Lqy Ts6?Y/dafV\1[WV#Q_1Fhs}VIӻZrm 3,D%g'R J_!WBͺ{QK׆চLhg*4J71i ϗ} hdC‡i2'A  8 D P \hpxTABLE OF CONTENTS ABLSteve WoodallNTtev Normal.dotlSteve WoodallNT14vMicrosoft Word 8.0@ @љl@4l@љlJv ՜.+,D՜.+,@ hp| DocumentSummaryInformation8DCompObj$j N/A<Dj TABLE OF CONTENTS Title(RZ _PID_GUID _PID_HLINKSAN{EA39F521-D892-11D6-A416-E83388DAD77C}AHBv'& Fig 2-2.wmft'|@ Fig 3-1.wmfw'@ Fig 3-2.wmfr'f Fig 5-1.wmfq'j  Fig 5-2.wmfp'tq  Fig 5-3.wmfw'x  Fig 5-4.wmfq'  Fig 6-1.wmfr' Fig 6-2.wmfp' Fig 7-1.wmfs'ӆ Fig 7-2.wmf  FMicrosoft Word Document MSWordDocWord.Document.89q [4@4Normal1$CJhmH nH <A@<Default Paragraph Font4&@4Footnote Reference<O<Level 1 & F0@& h:B@: Body Text  ` CJOJQJHC@"HBody Text Indent `OJQJGm"1<D P>[t{]6-6Z66667A7n7777(8X8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFI&5XAKSVfqT 3&i4;'AzGGGdJJKHKKKIUoUW=XpXX]]^l |+I_ * (9WGgf@WTn?֐-]JmLNOPQTUWXYZ[]^_`abcdeghjklmnorstuvxyz{|}%GX}!AyMR\ipw~"""{{|AY[::: !I!44 _1095361660 _1095354158 _1095362546"{Y@@@"{Y !""""|<}<~<~<ӂԂA\tuuz !""""|<}<~<~<ӂԂA\tuuz Steve Woodall9C:\Our Files\Steve\MICRO\Z80 PIO Man\Z80 PIO Man text.doc Steve Woodall9C:\WINDOWS\TEMP\AutoRecovery save of Z80 PIO Man text.asd Steve Woodall9C:\WINDOWS\TEMP\AutoRecovery save of Z80 PIO Man text.asd Steve Woodall4C:\Our Files\Steve\MICRO\Z80 PIO Man\Z80 PIO Man.doc Steve Woodall4C:\Our Files\Steve\MICRO\Z80 PIO Man\Z80 PIO Man.doc 0CJOJQJ.(#7l#70.#71#72 $73@$74t$75$76$77@EPSON Stylus COLOR 680 (Copy 2)LPT1:EPIJNL40EPSON Stylus COLOR 680EPSON Stylus COLOR 680 (Copy 2)^ 4hh0DLLName16=EPIGUE5D.dllDLLName32=EPID2E5A.dllEPSON Stylus COLOR 680dhh hh q*** q***24 EPSON Stylus COLOR 680 (Copy 2)^ 4hh0DLLName16=EPIGUE5D.dllDLLName32=EPID2E5A.dllEPSON Stylus COLOR 680dhh hh q*** q***24 ԂԂ<ԂԂ`@GTimes New Roman5Symbol3& ArialSWP TypographicSymbols" h,j-j-jVJv<Y dD-+TABLE OF CONTENTS Steve Woodall Steve Woodall