 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 07.01.2005, 15:59 Titel: INTERRUPTE, insbesondere INT 10h, AH=4Fh (SVGA) |
|
|
Hi!
Ich habe vor kurzem eine weitere Verständnishürde genommen: ICH KANN ENDLICH MIT DEN INTERRUPTs UMGEHEN!
...
Was heißt umgehen...
Ich verstehe soweit die Theorie mit den Registern, und habe inzwischen schon in einigen Programmen Maussteuerung eingebaut.
Außerdem hab ich ne 5MB große, annähernd vollständige Referenz aller INTs runtergeladen.
Aber:
Der INT 10h, der eine ganze Menge Bildschirm-Funktionen bietet, bereitet mir noch arge Probleme.
Mit AH = 00h kann man schon eine ganze Menge verschiedener Modi initialisieren. Nur sind die meisten davon anscheinend nicht mit meiner Grafikkarte kompatibel, und die, die es sind, bringen mir nix, weil sie sowiso schon durch den SCREEN-Befehl aufrufbar sind.
Also hab ich in der Referenz ein bisschen weitergelesen, und bin dann beim INT 10h, AH=4Fh hängengeblieben:
SVGA - FUNKTIONEN!
Funktion AL = 02h initiiert einen Modus, die Nummer des Modus muss in BX angegeben werden.
Und fast alle Modi funktionieren bei mir!
Nur bei den SVGA-Textmodi streikt der Bildschirm, aber das ist egal.
Nun, überglücklich wie ich war, wollte ich jetzt mit dem Zeichnen anfagen.
PSET, LINE, CIRCLE, usw, ging alles nicht.
Hätt ich mir ja denken können.
Also versuch ich's mit POKE.
DEF SEG=&HA000
FOR X = 0 TO 639
.FOR Y = 0 TO 479
..POKE X + Y * 640, X
.NEXT
NEXT
DEF SEG
(Die Punkte in dem Beispiel haben keine Bedeutung, symbolisieren nur Leerzeichen, und sollen für bessere Lesbarkeit sorgen...)
Was darauf folgte, sollte jedem klar sein: Eine OVERFLOW-Meldung.
Klar, das OFFSET kann ja nicht größer als 65535 sein. und Wenn man stattdessen einfach das Segment verschiebt...?
Nein, das funktioniert selbstvertändlich auch nicht. Die Grafikausgabe hört einfach nach dem 64tem KByte auf.
LANGE REDE, KURZER SINN:
Wie kann ich bei SVGA den GANZEN Bildschirm beschreiben?
Geht es vllt mit INP/OUT, so wie man auch die Palette bearbeiten kann?
Oder lässt sich über irgendeinen INTERRUPT-Aufruf, den ich bis jetzt übersehen habe, etwas ausrichten?
Thanx für euere Hilfe!
Ciao |
|
Nach oben |
|
 |
Paul aka ICC, HV-Freak
Anmeldungsdatum: 11.09.2004 Beiträge: 588 Wohnort: Uelzen
|
Verfasst am: 07.01.2005, 16:13 Titel: |
|
|
Moin ! In den SVGA Modi's geht das leider nicht mehr so einfach Pixel für Pixel.
Du schreibst direkt in den RAM, doch dort hast du immer nur einen kleinen "Ausschnitt" des richtigen Videospeichers auf der Grafikkarte. Der Videospeicher ist in sogenannte Banks unterteilt, und die gilt es umzuschalten. Allerdings weiß ich im Moment nicht, welcher Interrupt das macht
Bankswitching nennt sich das ganze _________________
 |
|
Nach oben |
|
 |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 07.01.2005, 16:21 Titel: |
|
|
....ja, davon hab ich grade erst... ich glaub vllt vor ner halben stunde auf east-power-soft.de gelesen, da gings halt um EMS und XMS
hmmmm....
dann sollt ich die referenz nochmal checken.
glaub, da war tatsächlich was mit paging-funktionen, aber über die hab ich hinweg gelesen, weil ich damit erst nix anfangen konnte...
Andere Frage: gibts auch einen Port, über den man die Grafikkarte ansprechen kann?
Blöde frage, ich kenn ja schon ein paar.
03C7, 03C8 und 03C9 sind für die Palette zuständig.
Also sollte es auch welche geben, mit denen man richtig zeichnen kann, oder...?
naja, auf jeden fall danke für die AW, jetz weiß ich, auf was ich aufpassen muss *g*
ciao! |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
|
Nach oben |
|
 |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 09.01.2005, 22:04 Titel: |
|
|
Danke, die beiden dürften mir echt weiter helfen!
ich bin jetzt mal bloß so drübergeflogen, hab noch zu tun
naja, vielleicth sollte ich dazu sagen, dass ich dank dem Hinweis mit dem Paging inzwischen selber rausgefunden habe, dass es INT 10h mit AX = &h4F05 ist, mit dem man zwischen den banks umschalten kann.
Und mit dem Wissen hab ich mir gleich mal spontan ein Grundgerüst für ne LIB zusammenbasteln können!
Naja, die Wichtigsten Drawing Primitives halt, PSET, LINE, BOX, FILLED BOX, CIRCLE, FILLED CIRCLE, ELLIPSE, um genau zu sein
Aber wie war es anders zu erwarten - sie sind zu langsam.
naja, die wirklich guten libs sind halt ned ohne grund in assembler geschrieben.
vielleicht fang ich auch mal mit einer an, aber jetzt muss ich erst mal was für den QB-Wettbewerb tun *g*
also danke für die Tipps!
Ciao |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|