Newsgroup: it.comp.lang.c++
Titolo: VOGLIO LA 800x600

SAPETE DIRMI PER CORTESIA COME OTTENERE UNA MODALITA' GRAFICA 800x600 ALMENO
65535 COLORI MA NON SOTTO WINDOWS?
PREFERIBILMENTE ASSEMBLER???
/\NGYEL

Angyel wrote:

DEVI USARE LE MODALITA' VESA.

come?


char setmode(unsigned int mode)
        {
unsigned int modo2;
        _AX=0x4f02;//Cambia risoluzione
        _BX=mode;
        asm int 0x10;
        if (_AL!=0x4f)
                {
                cout<<"Funzione (0x4f02): non supportata"<<endl;
                getch();
                exit(0xff00);
                }
        if(_AH!=0)
                {
                cout<<"Funzione (0x4f02): errore di esecuzione"<<endl;
                getch();
                exit(0xff00);
                }
        _AX=0x4f03;//Chiedi risoluzione attuale
        asm int 0x10;
        modo2=_BX;
        if (_AL!=0x4f)
                {
                cout<<"Funzione (0x4f03): non supportata"<<endl;
                getch();
                exit(0xff00);
                }
        if(_AH!=0)
                {
                cout<<"Funzione (0x4f03): errore di esecuzione"<<endl;
                getch();
                exit(0xff00);
                }
        if(modo2==_MODE)
                {
                set_y_ar();//OK
                }
        return(0);
        }
Values for VESA video mode:
  00h-FFh OEM video modes (see AH=00h)
 100h 640x400x256
 101h 640x480x256
 102h 800x600x16
 103h 800x600x256
 104h 1024x768x16
 105h 1024x768x256
 106h 1280x1024x16
 107h 1280x1024x256
 108h 80x60 text
 109h 132x25 text
 10Ah 132x43 text
 10Bh 132x50 text
 10Ch 132x60 text
 ------------ VBE v1.2+ ------------------
 10Dh 320x200 32k
 10Eh 320x200 64k
 10Fh 320x200 16M
 110h 640x480 32k
 111h 640x480 64k
 112h 640x480 16M
 113h 800x600 32k
 114h 800x600 64k
 115h 800x600 16M
 116h 1024x768 32k
 117h 1024x768 64k
 118h 1024x768 16M
 119h 1280x1024 32k
 11Ah 1280x1024 64k
 11Bh 1280x1024 16M
Cerca in rete le specifiche della Vesa 2.0
per esempio su altavista : vbe&2.0
Poi per scrivere a video dovrai usare il segmento 0xa000(e' li che viene 
mappata la mem. video) ma sono cose che troverai sulle specifiche.
Ciao


Per inizializzare tutto devi prima settare la modalita' video e
raccogliere alcune informazioni:
- inizializza la modalita':
(da Interrupt List R34 - Ralph Brown)
INT 10 - VESA SuperVGA BIOS - SET SuperVGA VIDEO MODE
	AX = 4F02h
	BX = mode
		bit 15 set means don't clear video memory
Return: AL = 4Fh function supported
	AH = status
	    00h successful
	    01h failed
SeeAlso: AX=4F01h,AX=4F03h
Values for VESA video mode:
 00h-FFh OEM video modes (see AH=00h)
 100h	640x400x256
 101h	640x480x256
 102h	800x600x16
 103h	800x600x256
 104h	1024x768x16
 105h	1024x768x256
 106h	1280x1024x16
 107h	1280x1024x256
 108h	80x60 text
 109h	132x25 text
 10Ah	132x43 text
 10Bh	132x50 text
 10Ch	132x60 text
---VBE v1.2---
 10Dh	320x200x32K
 10Eh	320x200x64K
 10Fh	320x200x16M
 110h	640x480x32K
 111h	640x480x64K
 112h	640x480x16M
 113h	800x600x32K
 114h	800x600x64K
 115h	800x600x16M
 116h	1024x768x32K
 117h	1024x768x64K
 118h	1024x768x16M
 119h	1280x1024x32K
 11Ah	1280x1024x64K
 11Bh	1280x1024x16M
- usa questo per ottenere la granularita' (GRAN), l'indirizzo della
window positioning function (WPF) e la grandezza in byte di una linea
(BPL)
(da Interrupt List R34 - Ralph Brown)
INT 10 - VESA SuperVGA BIOS - GET SuperVGA MODE INFORMATION
	AX = 4F01h
	CX = SuperVGA video mode
	ES:DI -> 256-byte buffer mode information (see below)
Return: AL = 4Fh function supported
	AH = status
	    00h successful
	    01h failed
Desc:	determine the attributes of the specified video mode
SeeAlso: AX=4F00h,AX=4F02h
Format of mode information:
Offset	Size	Description
 00h	WORD	mode attributes
		bit 0: mode supported
		bit 1: optional information available
		bit 2: BIOS output supported
		bit 3: set if color, clear if monochrome
		bit 4: set if graphics mode, clear if text mode
 02h	BYTE	window A attributes
		bit 0: exists
		bit 1: readable
		bit 2: writable
		bits 3-7 reserved
 03h	BYTE	window B attributes (as for window A)
 04h	WORD	window granularity in K
 06h	WORD	window size in K
 08h	WORD	start segment of window A
 0Ah	WORD	start segment of window B
 0Ch	DWORD	-> FAR window positioning function (equivalent to
AX=4F05h)
 10h	WORD	bytes per scan line
---remainder is optional for VESA modes in v1.0/1.1, needed for OEM
modes---
 12h	WORD	width in pixels
 14h	WORD	height in pixels
 16h	BYTE	width of character cell in pixels
 17h	BYTE	height of character cell in pixels
 18h	BYTE	number of memory planes
 19h	BYTE	number of bits per pixel
 1Ah	BYTE	number of banks
 1Bh	BYTE	memory model type (see below)
 1Ch	BYTE	size of bank in K
 1Dh	BYTE	number of image pages
 1Eh	BYTE	reserved (0)
---VBE v1.2+---
 1Fh	BYTE	red mask size
 20h	BYTE	red field position
 21h	BYTE	green mask size
 22h	BYTE	green field size
 23h	BYTE	blue mask size
 24h	BYTE	blue field size
 25h	BYTE	reserved mask size
 26h	BYTE	reserved mask position
 27h	BYTE	direct color mode info
 28h	BYTE	reserved (0)
Values for memory model type:
 00h text
 01h CGA graphics
 02h HGC graphics
 03h 16-color (EGA) graphics
 04h packed pixel graphics
 05h "sequ 256" (non-chain 4) graphics
 06h direct color (HiColor, 24-bit color)
 07h YUV (luminance-chrominance)
 08h-0Fh reserved for VESA
 10h-FFh OEM memory models
Ora viene il bello: metter giu' un pixel.
Spero che tu stia lavorando in modalita' reale altrimenti fermati qui,
cio' che segue si adatta poco a quella protetta.
pixel in X,Y colore COL
 xor dx,dx
 mov ax,0xA000
 mov es,ax
 mov ax,[X]     ; determinazione dell'indirizzo del pixel
 mov bx,2       ; (16 bit) 2 byte per pixel
 mul bx
 mov bx,ax
 mov cx,dx
 mov ax,BPL
 mul [Y]
 add ax,bx      ; in dx:ax c'e' l'indirizzo del pixel
 adc dx,0
 add dx,cx
 mov di,ax
 cmp dx,BANK    ; BANK contiene l'ultimo banco utilizzato
 je  @p1
 mov BANK,dx
 mov cx,GRAN
 shl dx,cl
 xor bx,bx
 call WPF       ; WPF cambia il banco, vedi anche INT 10, AX=4f05
@p1:
 mov ax,word ptr [COL]
 stosw
N.B. quando inizializzi la modalita' video setta BANK=0
Dovrebbe bastare. Ti consiglio di consultare l'"Interrupt List" di
Ralph Brown, oppure guarda sull'FTP della SciTech.
Ciao
RSte
rste79...@hotmail.com

GRAZIEEEEEE
siete grandi.
/\ngyel