Hallo, guten Tag. Wie wird bitte die Segmentadresse von VGA erhöht? Ich möchte bitte einen VGA-Screen 800x400 mit Grafik beschreiben. Nach 80 Zeilen kommen die nächsten 80 Zeilen Wie sieht bitte das nächste Segment aus ( DEf Seg=...)? ------------------- def seg=&ha000 for z&=0 to 64000 poke z&,64 next z& ....... ....... ------------------ Danke.
Da gibt es keine größere. Es ist nur ein 64KB Segment ab hex A000 aktiv, welches von der CPU komplett mittels dem 16 Bit Offset (Register) angesprochen werden kann. Um andere Adressen im VGA Speicher zu mappen muss man dessen Register umprogrammieren. Wie habe ich lange vergessen. Und 800 horizontale Pixel klingt nach SVGA und nicht mehr nach VGA - da hatte man nur 640 Pixel horizontal in den Modi mit vernünftiger Anzahl an Farben.
Danke. ja das ist SVGA. Ich weiss nur nicht mehr wie die Segmentadresse sich mit dem offset aufteilt bei den nächsten 64000 Byte.
Peter B. schrieb: > Ich weiss nur nicht mehr wie die Segmentadresse sich mit dem offset > aufteilt Die physikalische Speicheradresse ist (in Real Mode) Segment * 16 + Offset.
Peter B. schrieb: > Ich weiss nur nicht mehr wie die Segmentadresse sich mit dem offset > aufteilt bei den nächsten 64000 Byte. Gibt es nicht. Du musst der Karte sagen welchen Teil des (deutlich größeren) Framebuffers sie auf dem A000 Segment als Fenster abbilden soll damit die CPU darauf zugreifen kann. Für die CPU liegen die Daten immer von (einschließlich) A000 bis (ausschließlich) B000 im Speicher.
Jim M. schrieb: > Für die CPU liegen die Daten immer von (einschließlich) A000 bis > (ausschließlich) B000 im Speicher. Nö. Im Mode 00 belegt sie 128kB, beginnend bei 0hA0000 und endend bei 0hBFFFF: https://web.stanford.edu/class/cs140/projects/pintos/specs/freevga/vga/vgamem.htm#mapping
du must die neue Segmentadresse normalisieren etwa so: seg = (0xA000 * 16 + 64000) / 16
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.