Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: QB: SVGA, jälleen kerran...

Sivun loppuun

Grey [09.03.2003 03:47:43]

#

Olen kyllä löytänyt aiheesta monia vinkkejä, mutta enpähän yhdestäkään oppinut mitään kunnolla, paitsi sen että SVGA - tiloja voi käyttää Qbasicissa melko suoraan. En vain osaa käyttää mm. rekisteriä ja keskeytyksiä mitenkään. Niitä kopeloimalla kun saisin näytön laitettua SVGA - tilaan Qbasicissa.

Olen sen verran ottanut selvää että se on minulle vähän liiankin monimutkaista. Esivalmistelut, joita tarvitaan varmaankin, ovat minun tietoni tuolla puolen. Ja lopulta sitten tilan asetus, että asettaminen pois. Jooh, kaksi kuukautta olen koettanut etsiä sellaista, mutta enpä ole löytänyt yhtään tarpeeksi selkeää vinkkiä..

-Grey-

Vilikki [10.03.2003 19:14:43]

#

Itsekin joskus vähän selailin, muttei ole mielenkiinto paljon riittänyt tutkia asiaa enemmän...

Grey [17.03.2003 22:24:39]

#

Minua asia kiinnostaa, ja kun kiinnostus on jatkunut näin pitkään, ei se taida loppua kirveelläkään. Kuitenkin, en pyydä kokonaista koodia. Vain kaavan miten sen koko homman saa käyttöön ja millä Qbasicin käskyillä. Loput menee kyllä itsestään, kun aikani näprään, jos en hajota konettani vahingossa ^_^

-Grey-

Vilikki [18.03.2003 11:56:25]

#

Voisinpa tietysti vielä vähän katsella, jos jotain löytäisin...

thefox [18.03.2003 16:26:08]

#

No, jos oikein yksinkertaista haluaa niin käytä pelkkiä keskeytyksiä, eli CALL INTERRUPT:ia. Myös pixelput-routinen pitäisi onnistua käyttämällä video biosin keskeytystä. Muistaakseni itseasiassa juuri sinä, Grey, annoit joskus linkin johonkin QB SVGA-paskeeseen joka oli toteutettu pelkästään keskeytyksillä.

Grey [18.03.2003 21:24:57]

#

Se tuotti vaivaa, mutta kovan etsinnän jälkeen löysin koodinpätkän mikä ainakin tunnistaa onko VESA käytössä vai ei. Mukavan simppeli koodi, mutta oma aivokapasiteettini ei riitä sen tajuamiseen että miten siihen pätkään lisätään näyttötilan vaihto. Koodi olisi tälläinen:

REM $INCLUDE: 'QB.BI'
TYPE VGAInfoType
 VESASignature AS STRING * 4
 VESAVersion AS INTEGER
 OEMStringPTR AS LONG
 Capabilities AS STRING * 4
 VideoModePTR AS LONG
 TotalMemory AS INTEGER
 Reserved AS STRING * 236
END TYPE
DIM VGAInfo AS VGAInfoType
DIM regs AS regTypeX
regs.AX = &H4F00
regs.ES = VARSEG(VGAInfo)
regs.DI = VARPTR(VGAInfo)
CALL InterruptX (&H10, regs, regs)
IF regs.AX = &H4F THEN
 PRINT "VESA found."
ELSE
 PRINT "VESA not found."
END IF

Ehkä keksin joskus itse ratkaisun, mutta pyydänpä kuitenkin nyt apua. Sivusto kun ei kertonut tuon enempää ja sieltä tiedon etsiminen siis ei ehkä oikein onnistu. Osoite on muuten http://qbchronicles.qbrpgs.com.

-Grey-

Edit: Okei, okei.. Luovutan.. En jaksa sählätä kooditagien kanssa..

thefox [19.03.2003 19:53:59]

#

Jonkinlaista selostusta:

' qb.bi sisältää muutamat extra-funktiomäärittelyt, muista käynnistää qb tyyliin qb.exe /l
REM $INCLUDE: 'QB.BI'
TYPE VGAInfoType ' strukti, jonka keskeytys tulee täyttämään
  VESASignature AS STRING * 4
  VESAVersion AS INTEGER
  OEMStringPTR AS LONG
  Capabilities AS STRING * 4
  VideoModePTR AS LONG
  TotalMemory AS INTEGER
  Reserved AS STRING * 236
END TYPE
DIM VGAInfo AS VGAInfoType ' määritellään muuttuja
DIM regs AS regTypeX ' regtypex on määritelty qb.bi:ssä
regs.AX = &H4F00 ' funktion numero (tässä haetaan tietoja VESA:sta)
regs.ES = VARSEG(VGAInfo)
regs.DI = VARPTR(VGAInfo) ' es:di osoittaa VGAInfoType-struktuuriin
CALL InterruptX (&H10, regs, regs) ' kutsutaan keskeytystä 10h (video-keskeytys), käyttän rekisterien arvoina regsin arvoja (kutsun jälkeiset ulosteet löytyvät myös regsistä)
IF regs.AX = &H4F THEN ' tsekataan mitä AX-rekisteri sisälsi kutsun jälkeen
PRINT "VESA found." ' jos AX = 4F (heksa), näytönohjain tukee VESAa.
ELSE
PRINT "VESA not found."
END IF

No, selostuksista huolimatta tuosta ei välttämättä tajua mitään ellei ole kokemusta keskeytys-kutsuista ym. sellaisesta. Suosittelen lisäksi hankkimaan mm. PCGPE:n (vanha versio) mukana tulevan VESA-dokumentaation, vaikka sekin voi olla hieman vaikeaselkoinen jos ei omaa tiettyä pohjaa.

InvalidCo [30.03.2003 20:03:24]

#

lainaus:

Olen kyllä löytänyt aiheesta monia vinkkejä, mutta enpähän yhdestäkään oppinut mitään kunnolla, paitsi sen että SVGA - tiloja voi käyttää Qbasicissa melko suoraan. En vain osaa käyttää mm. rekisteriä ja keskeytyksiä mitenkään. Niitä kopeloimalla kun saisin näytön laitettua SVGA - tilaan Qbasicissa.

Olen sen verran ottanut selvää että se on minulle vähän liiankin monimutkaista. Esivalmistelut, joita tarvitaan varmaankin, ovat minun tietoni tuolla puolen. Ja lopulta sitten tilan asetus, että asettaminen pois. Jooh, kaksi kuukautta olen koettanut etsiä sellaista, mutta enpä ole löytänyt yhtään tarpeeksi selkeää vinkkiä..

-Grey-

No mä oon ainakin törmänny sellaseen koodinpätkään, joka laittaa näytön tilan ihan samanlaiselle kun se on sillon kun koodaa QBasicillä. SCREEN 0: WIDTH 80, 25-siinä kaikki. Ainakin se toimi mun koneella...

-The PC-Master-

trinit [30.03.2003 20:07:58]

#

lainaus:

SCREEN 0: WIDTH 80, 25-siinä kaikki. Ainakin se toimi mun koneella...

Niinpä, tuo toimii jokaisella koska SCREEN 0 on tekstitila (ei siis SVGA tila) ja siinä on 80 merkkiä 25 rivillä -> yleisin tekstitila.

InvalidCo [31.03.2003 14:32:03]

#

lainaus:

lainaus:

SCREEN 0: WIDTH 80, 25-siinä kaikki. Ainakin se toimi mun koneella...

Niinpä, tuo toimii jokaisella koska SCREEN 0 on tekstitila (ei siis SVGA tila) ja siinä on 80 merkkiä 25 rivillä -> yleisin tekstitila.

Mut mäpä just tarkotinkin et mistä tahansa näyttömoodista takasin TAVALLISEEN, ei SVGA:han!!!

-The PC-Master-

trinit [31.03.2003 16:38:44]

#

lainaus:

Mut mäpä just tarkotinkin et mistä tahansa näyttömoodista takasin TAVALLISEEN, ei SVGA:han!!!

Ai juu, niinpäs kirjoititkin :) Taidan käydä ostamassa uudet silmät tässä välissä ...

Grey [01.04.2003 01:49:03]

#

Damn.. Näköjään taidan luovuttaa ja pyytää jotakuta ASMia osaavaa tekemään kirjaston, missä tarvitsee vain syöttää keskeytys ja tilan vaihto on siinä. Niin ja tietysti se grafiikan piirto. Jotain PSETin ja LINEn kaltaista, mutta SVGA - tilassa toimivaa. Kiitokset sille etukäteen joka tälläisen vaivautuu harmikseni tekemään minulle..

-Grey-


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta