The MOS 6567/6569 video controller (VIC-II) and its application in the Commodore 64
Contents 3. Description of the VIC 3.7. Text/bitmap display
3.7.3. Graphics modes |
The graphics data sequencer is capable of 8 different graphics modes that are selected by the bits ECM, BMM and MCM (Extended Color Mode, Bit Map Mode and Multi Color Mode) in the registers $d011 and $d016 (of the 8 possible bit combinations, 3 are "invalid" and generate the same output, the color black). The idle state is a bit special in that no c-accesses occur in it and the sequencer uses "0" bits for the video matrix data. The sequencer outputs the graphics data in every raster line in the area of the display column as long as the vertical border flip-flop is reset (see section 3.9.). Outside of the display column and if the flip-flop is set, the last current background color is displayed (this area is normally covered by the border). The heart of the sequencer is an 8 bit shift register that is shifted by 1 bit every pixel and reloaded with new graphics data after every g-access. With XSCROLL from register $d016 the reloading can be delayed by 0-7 pixels, thus shifting the display up to 7 pixels to the right. The address generator for the text/bitmap accesses (c- and g-accesses) has basically 3 modes for the g-accesses (the c-accesses always follow the same address scheme). In display state, the BMM bit selects either character generator accesses (BMM=0) or bitmap accesses (BMM=1). In idle state, the g-accesses are always done at video address $3fff. If the ECM bit is set, the address generator always holds the address lines 9 and 10 low without any other changes to the addressing scheme (e.g. the g-accesses in idle state then occur at address $39ff). The 8 graphics modes are now covered separately and the generated addresses and the interpretation of the read data on c- and g-accesses is described. This is followed by a description of the pecularities of the idle state. For easy reference, the addresses are always given explicitly for every mode although e.g. the c-accesses are always the same.
3.7.3.1. Standard text mode (ECM/BMM/MCM=0/0/0) 3.7.3.2. Multicolor text mode (ECM/BMM/MCM=0/0/1) 3.7.3.3. Standard bitmap mode (ECM/BMM/MCM=0/1/0) 3.7.3.4. Multicolor bitmap mode (ECM/BMM/MCM=0/1/1) 3.7.3.5. ECM text mode (ECM/BMM/MCM=1/0/0) | 3.7.3.6. Invalid text mode (ECM/BMM/MCM=1/0/1) 3.7.3.7. Invalid bitmap mode 1 (ECM/BMM/MCM=1/1/0) 3.7.3.8. Invalid bitmap mode 2 (ECM/BMM/MCM=1/1/1) 3.7.3.9. Idle state