Vertical Windows (VWindows) are used to map sections of the Register RAM into the upper section of the lower Register File. The 80C196KC and 512 bytes (00H-1FFH) and the 80C196KD has 1024 bytes (00H-3FFH) of Register RAM that may be remapped.
An important difference between Horizontal and Vertical Windows is that VWindows reside directly in the 80C186KC/KD addressing space. In other words, while Hwindows just swap 24-byte chunks of Special Function Registers File, Vwindows actually remap locations within the general-purpose register RAM address space. With Hwindows, you use only register-direct addressing (and get the Special Function Registers located within the Hwindow), but with Vwindows you can use either a register-direct address )and get the location within the VWindow) or a 16-bit indirect or indexed address (and get the actual general-purpose register RAM location in memory).
Vwindows may be one of three sizes: 32, 64, or 128 bytes. The Window Select Register (WSR) determines both the size of the VWindow and which window of that size is to be remapped. Figure
When a 32-byte window is selected, it is placed at E0H and extends to FFH. When a 64-byte window is selected, it is mapped from C0H to FFH; and when a 128-byte window is selected, it is mapped from 80H to FFH. The Register RAM that is "covered" by the window is not accessible by register-direct addressing when VWindows are active. However, that "covered" memory in the lower Register File is still accessible using 16-bit indirect or indexed addressing.
As an example, let's map the 128-byte block from 180H-1FFH into the upper part of the Register File from 80H-FFH. Now any access to locations 80H-FFH using a register-direct reference will actually access the memory at 180H-01FFH. However, accesses to locations 0080H-00FFH using 16-bit addressing will access the registers as if the VWindows were not active.
The sample code in Figure 2 shows the VWindows being switches, as well as the correct value to load into the WSR. It also illustrates the difference between register-direct and indexed addressing when using VWindows.
VWindows provide for fast context switching of register sets. For example, an Interrupt Service Routine could have its own set of local registers in a VWindow and pass results to a main routine through global registers in the Register File.
The Window Select Register (WSR) description in Appendix C of the users manual (both printed and electronic versions) includes tables that explicitly list the remapped memory sections corresponding to specific WSR values.
© Intel Corporation, 1995
* Legal Information © 1999 Intel Corporation