[Contents] [index] [Help] [Retrace] [browse <] [Browse >]

For a memory picture wider than the display window, you need to respecify
the modulo so that the correct data words are fetched for each line of the
display. As an example, assume the display window is the standard 320
pixels wide, so 40 bytes are to be displayed on each line. The big picture
in memory, however, is exactly twice as wide as the display window, or 80
bytes wide. Also, assume that you wish to display the left half of the big
picture. Figure 3-14 shows the relationship between the big picture and
the picture to be displayed.


       START                                                 START+78
          __________________________|___________________________
         |                          |                           |
         |<-------------------------+-------------------------->|
         |       Width of the bit-plane defined in RAM          |
         |                          |                           |
         |<------------------------>|                           |
         | Width of defined screen  |                           |
         | on which bit-plane data  |                           |
         |      is to appear        |                           |
         |                          |                           |
         |                          |                           |

           Figure 3-14: Memory Picture Larger than the Display


Because 40 bytes are to be fetched for each line, the data fetch for line
1 is as shown in Figure 3-15.

  _______________________________________________________________________
 |                                                                       |
 |   Data for line 1:                                                    |
 |                                                                       |
 | Location:     START      START+2       START+4    ...      START+38   |
 |               -----      -------       -------             --------   |
 |              leftmost   next word     next word          last display |
 |            display word                                      word     |
 |                                                                       |
 |                                                               /|\     |
 |                       Screen data fetch stops ( ddfstop ) for  |      |
 |                       each horizontal line after the last      |      |
 |                       word on the line has been fetched________|      |
 |_______________________________________________________________________|

        Figure 3-15: Data Fetch for the First Line When Modulo = 40


At this point,  bplxpth and bplxptl  contain the value start+40. the
modulo, which is 40, is added to the current value of the pointer so that
when it begins the data fetch for the next line, it fetches the data that
you intend for that line. The data fetch for line 2 is shown in Figure
3-16.

  _______________________________________________________________________
 |                                                                       |
 |   Data for line 2:                                                    |
 |                                                                       |
 | Location:    START+80     START+82     START+84    ...     START+118  |
 |              --------     --------     --------            ---------  |
 |              leftmost     next word    next word         last display |
 |            display word                                      word     |
 |_______________________________________________________________________|

        Figure 3-16: Data Fetch for the Second Line When Modulo = 40


To display the right half of the big picture, you set up
 vertical blanking  routine to start the bitplane pointers at location
START+40 rather than START with the modulo remaining at 40. The data
layout is shown in Figures 3-17 and 3-18.

  _______________________________________________________________________
 |                                                                       |
 |   Data for line 1:                                                    |
 |                                                                       |
 | Location:    START+40     START+42     START+44    ...     START+78   |
 |              --------     --------     --------            --------   |
 |              leftmost     next word    next word         last display |
 |            display word                                      word     |
 |_______________________________________________________________________|

    Figure 3-17: Data Layout for First Line -- Right Half of Big Picture


Now, the bitplane pointers contain the value START+80. The modulo (40) is
added to the pointers so that when they begin the data fetch for the
second line, the correct data is fetched.

  _______________________________________________________________________
 |                                                                       |
 |   Data for line 2:                                                    |
 |                                                                       |
 | Location:    START+120    START+122    START+124    ...    START+158  |
 |              ---------    ---------    ---------           ---------  |
 |              leftmost     next word    next word         last display |
 |            display word                                      word     |
 |_______________________________________________________________________|

    Figure 3-18: Data Layout for Second Line -- Right Half of Big Picture


Remember, in high resolution mode, you need to fetch twice as many bytes
as in low resolution mode. For a normal-sized display, you fetch 80 bytes
for each horizontal line instead of 40.