Paste Description for VESA GDI driver
castawayed VGA driver
should provide SVGA driver capabilities
but anyway good doc for VGA registers
- VESA GDI driver
- Sunday, August 5th, 2007 at 8:17:06am MDT
- ; **********************************************************
- ; Name: VESA Graphic Device Interface
- ; Autor: Peter Kleissner
- ; Version: 1.00
- ; Date: 04.08.2007 21:52
- ; last Update: 04.08.2007 21:52
- ; see document: ToasterOS.pdf
- ; **********************************************************
- [BITS 32]
- CPU 386
- %define Type_System
- %include "interface.asm"
- org VESA_GDI
- ; VGA, SVGA, VESA Interface port registers
- ;
- ; Attribute Controller Registers
- ;
- ; Index/Data Register 3C0h [Write]
- ; Data Register 3C1h [Read]
- ;
- ; Indexes of the Attribute Controller Register
- ; Palette Registers 00h - 0Fh
- ; Attribute Mode Control Register 10h
- ; Overscan Color Register 11h
- ; Color Plane Enable Register 12h
- ; Horizontal Pixel Panning Register 13h
- ; Color Select Register 14h
- ; Miscellanenous 16h [undocumented, na]
- ;
- ; Miscellaneous Registers
- ;
- ; Miscellaneous Output Register 3C2h [Write]
- ; Miscellaneous Output Register 3CCh [Read]
- ; Input Status 0 Register 3C2h [Read]
- ; Video Subsystem Enable 3C3h (46E8h)
- ;
- ; Sequencer Registers
- ;
- ; TS Index Register 3C4h [EGA, Write]
- ; TS Data Register 3C5h [EGA, Write]
- ;
- ; Sequence Index Register 3C4h [VGA]
- ; Sequence Data Register 3C5h [VGA]
- ;
- ; Digital-Analog Converter Registers
- ;
- ; PEL Mask Register 3C6h [MCGA=0FFh, VGA]
- ; DAC State Register 3C7h [Read]
- ; PEL Address Register 3C7h [Write]
- ; PEL Address Register 3C8h [Write-Mode]
- ; PEL Data Register 3C9h
- ;
- ; Graphics Device Controller Position Registers
- ;
- ; Feature Control Register 3CAh [Read]
- ; Graphics 2 Position Register 3CAh [Write]
- ; Segment Select Register 3CBh
- ; Graphics 1 Position Register 3CCh [Write]
- ; Select Segment Register 3CDh
- ;
- ; Graphics Device Controller Registers
- ;
- ; Index Register 3CEh [EGA, Write]
- ; Data Register 3CFh [EGA, Write]
- ; Address/Index Register 3CEh [VGA]
- ; Graphics Register 3CFh [VGA, unused, undocumented]
- ;
- ; Clear Flip/Flop Registers (for Port 3C2h)
- ;
- ; EGA/VGA mono Feature Control Register 3BAh
- ; VGA graphics Feature Control Register 3DAh
- ; VBE Interface port registers [bochs, qemu]
- ; VBE Display Interface I/O Port Index 1CEh
- ; VBE Display Interface I/O Port Data 1CFh
- ;
- ; Indexes:
- ;
- ; VBE Display Index Idendification 0
- ; VBE Display Index X resolution 1
- ; VBE Display Index Y resolution 2
- ; VBE Display Index Bits per Pixel 3
- ; VBE Display Index Enable 4
- ; VBE Display Index Bank 5
- ; VBE Display Index Virtual Width 6
- ; VBE Display Index Virtual Height 7
- ; VBE Display Index X Offset 8
- ; VBE Display Index Y Offset 9
- ;
- ; Data Values:
- ;
- ; VBE Display Index Disabled 0
- ; VBE Display Index Enabled 1
- ; VBE Display Index Get Capabilities 2
- ; VBE Display Index 8 Bit Digital-Analog-Converter 20h
- ; VBE Display Index Linear Frame Buffer Enabled 40h
- ; VBE Display Index No Clear Memory 80h
- ; *************************************************************
- ; Function: Write Index/Value to Attribute Control Register
- ;
- ; Input:
- ; al Index
- ; ah Data
- ; *************************************************************
- Send_Attribute_Control_Register:
- ; clear flip/flop [for both Text Mode and graphics Mode]
- mov bl,al
- mov dx,3BAh
- in al,dx
- mov dx,3DAh
- in al,dx
- mov al,bl
- ; send the Index
- mov al,bl
- mov dx,3C0h
- out dx,al
- ; send the Data
- mov al,ah
- out dx,al
- ret
- ; *************************************************************
- ; Function: Write Value to Miscellaneous Output Register
- ;
- ; Input:
- ; al Value
- ; *************************************************************
- Send_Miscellaneous_Output_Register:
- ; send the Data
- mov dx,3C2h
- out dx,al
- ret
- ; *************************************************************
- ; Function: Write Index/Value to Sequencer Register
- ;
- ; Input:
- ; al Index
- ; ah Data
- ; *************************************************************
- Send_Sequencer_Register:
- ; if Index = 1 assume EGA (whyever)
- cmp al,1
- jne Send_Sequencer_Register_1
- ; send something
- mov bl,ah
- mov ax,0100h
- mov dx,3C4h
- out dx,ax
- ; send the Index
- mov al,1
- out dx,al
- ; send the Data
- mov al,bl
- inc dx
- out dx,al
- dec dx
- ; send something else
- mov ax,0300h
- out dx,ax
- ret
- Send_Sequencer_Register_1:
- ; send the Index
- mov dx,3C4h
- out dx,al
- ; send the Data
- mov al,ah
- inc dx
- out dx,ah
- ret
- ; *************************************************************
- ; Function: Write Value to DAC Mask Register
- ;
- ; Input:
- ; al Value
- ; *************************************************************
- Send_DAC_Mask_Register:
- ; send the Data
- mov dx,3C6h
- out dx,al
- ret
- ; *************************************************************
- ; Function: Write Index/Value to Graphics Controller Register
- ;
- ; Input:
- ; al Index
- ; ah Data
- ; *************************************************************
- Send_Graphics_Controller_Register:
- ; send the Index
- mov dx,3CEh
- out dx,al
- ; send the Data
- mov al,ah
- inc dx
- out dx,al
- ret
- ; *************************************************************
- ; Function: Write Index/Value to CRTC Controller
- ;
- ; Input:
- ; al Index
- ; ah Data
- ; *************************************************************
- Send_CRTC_Controller:
- ; send the Index
- mov dx,3D4h
- out dx,al
- ; send the Data
- mov al,ah
- inc dx
- out dx,al
- ret
- ; *************************************************************
- ; Function: VBE Port I/O write
- ;
- ; Input:
- ; al Index
- ; ah Data
- ; *************************************************************
- Write_VBE_Port:
- ; write the Index
- mov dx,1CEh
- out dx,al
- ; write the Data
- mov al,ah
- inc dx
- out dx,al
- ret
advertising
Update the Post
Either update this post and resubmit it with changes, or make a new post.
You may also comment on this post.
Please note that information posted here will expire by default in one month. If you do not want it to expire, please set the expiry time above. If it is set to expire, web search engines will not be allowed to index it prior to it expiring. Items that are not marked to expire will be indexable by search engines. Be careful with your passwords. All illegal activities will be reported and any information will be handed over to the authorities, so be good.