SiS 315 - PowerPoint PPT Presentation

About This Presentation
Title:

SiS 315

Description:

The screen-height parameter is 11-bits. Lowest 8-bits are in CRTC register 0x12 ... Reprogram the Line Compare' parameter with a value that is equal to one-half of ... – PowerPoint PPT presentation

Number of Views:31
Avg rating:3.0/5.0
Slides: 17
Provided by: ProfessorA2
Learn more at: https://www.cs.usfca.edu
Category:
Tags: sis | parameter

less

Transcript and Presenter's Notes

Title: SiS 315


1
SiS 315
  • An introductory exploration of features of the
    SVGA graphics processor used in our classrooms
    workstations

2
Some SVGA examples
  • Our GPU is manufactured by SiS
  • Official programming info is unavailable
  • Can find some unofficial info on internet
  • We explore some useful SiS 315 features
  • But remember other GPU chips are NOT
    hardware-compatible (so our software is unlikely
    to work on other SVGA systems)
  • We sacrifice the advantage of portability

3
SiS Extended Registers
  • The typical Super VGA chip implements a number of
    extra hardware registers
  • Most often these appear as additions to the
    standard set of VGA registers established by
    IBMs engineers
  • Graphics Controller (9 registers)
  • Timer-Sequencer (5 registers)
  • CRT Controller (25 registers)
  • Attribute Controller (21 registers)
  • Our SiS graphics processor implements extra
    Sequencer registers (ports 0x3C4/0x3C5) and also
    extra CRTC registers (0x3D4/0x3D5)

4
SiS Sequencer registers
  • Five standard VGA Sequencer-registers
  • 0 the Reset register
  • 1 the Clocking Mode register
  • 2 the Map Mask register
  • 3 the Character Map Select register
  • 4 the Memory Mode register
  • SiS implements registers 5, 6, 7, , etc.

5
In-Class Exercise
  • Investigate the functionality of register 5
  • Two-step process to read this register outb(
    5, 0x3C4 ) int val inb( 0x3C5 )
  • Two-step process to write this register outb(
    5, 0x3C4 ) outb( val, 0x3C5 )
  • Alternatively outw( (valltlt8)5, 0x3C4 )

6
Write a demo program
  • Remember to call function iopl( 3 )
  • Then create a program-loop
  • For every possible byte-value
  • write that byte-value to Seq-register 5
  • read the byte-value in Seq-register 5
  • print out the value that was read back
  • What do you learn from this exercise?

7
Some further experiments
  • Repeat the previous experiment, but add a new
    step within your program-loop
  • 4) read (and print) Seq-register 6
  • What do you learn from THIS exercise?
  • OK, try it again, but with Seq-register 7 in
    place of Seq-register 6 (Caution Dont try to
    write new values into registers 6 or 7)

8
Detecting screen-height
  • The screen-height parameter is 11-bits
  • Lowest 8-bits are in CRTC register 0x12
  • 9th and 10th bits are in CRTC register 0x07
  • This much is standard on VGA hardware
  • 11th bit is in SiS Sequencer register 0x0A
  • We need to read all three registers, then extract
    and assemble the various bits

9
The screen-height bits
crtc-0x12 (Vert Displ Enable End)
crtc-0x07 (Overflow Register)
screen_height - 1
?
seq-0x0A
10
Detecting screen-width
  • The screen-width parameter is 10 bits
  • It measures the width in 8-pixel units
  • Lowest 8-bits are in CRTC register 0x01
  • 9th and 10th bits in Extd Seq register 0x0B
  • The parameter-value is actually one less
  • It gives the id-number of the final unit
  • So we increment it, then multiply by 8

11
The screen-width bits
crtc-0x01 (Horizontal Display End)
screen_width 1 (in 8-pixel units)
seq-0x0B
12
Detecting CRT start-address
  • Very important parameter for animation!
  • This parameter is stored as 26 bits
  • It measures start-address in 4-byte units
  • Lowest byte stored in crtc register 0x0D
  • Next lowest byte is in crtc register 0x0C
  • Sequencer register 0x0D holds next byte
  • Sequencer register 0x37 has 2 more bits

13
The crt start-address bits
crtc-0x0D (Start Addr Lo)
crtc-0x0C (Start Addr Hi)
crt start-address (in 4-byte units)
seq-0x0D
seq-0x37
14
Detecting CRT Line-Compare
  • CRTC-address resets when counter LC
  • This is useful for certain special effects
  • Screen is split into two separate windows
  • Lower window shows VRAM address 0
  • Upper window is from crt start-address
  • Lowest 8-bits from CRT register 0x18
  • 9th bit from CRT register 0x07
  • 10th bit from CRT register 0x09
  • More bits from Sequencer register 0x0F

15
The Line-Compare bits
crtc-0x18 (Line Compare register)
crtc-0x07 (Overflow register)
Line-Compare
crtc-0x09 (Max Scan Line)
seq-0x0F
16
In-Class Experiment
  • Reprogram the Line Compare parameter with a
    value that is equal to one-half of the current
    screen-height
  • What visual effect do you observe?
  • Do you see a similar effect under Linux in both
    text mode and in graphics modes?
Write a Comment
User Comments (0)
About PowerShow.com