Ich weiß seit einiger Zeit, dass es möglich ist, einen Pseudo-160x100-Grafikmodus auf dem IBM CGA zu erreichen, indem ich die Zeilenhöhe mit CRTC auf zwei Pixel ändere. Ich habe versucht, dies jetzt für ein paar Tage zu erreichen, in eine Sackgasse geraten.Erreichen des 160x100 Modus in x86 Assembly
Die Intel® Open Source HD Graphics and Intel Iris™ Graphics Programmer's Reference Manual Ansprüche ich kann dies auf Seite 45 (oder Seite 59 in der PDF) durch Schreiben in das Maximum Scanline Register, oder das ist, was ich daraus interpretiere.
Ich habe versucht, direkt an Speicheradresse 3B5 mit einem Wert von 00000001b schreiben, oder den Code für 2 Scanlinien, glaube ich. Das hat gar nichts gemacht, als ich es in DOSBox getestet habe.
Wenn Sie den Code, den ich schrieb, um sehen möchten, welche in NASM versammeln:
BITS 16
xor bx,bx
mov ax, 3b5h
mov es, ax
mov ah, 00000001b
mov BYTE [es:bx], ah ; write 00000001b to 0x03b5:0000, right?
cli
hlt
Ich bin noch nicht sehr zuversichtlich, mit Low-Level-Sachen wie diese, und jede mögliche Hilfe würde geschätzt.
Haben Sie einen CGA-Grafikadapter in DOSBOX konfiguriert? – fuz
DOSBox ist ein Emulator/eine virtuelle Maschine. Code, der darin läuft, wird eine ganze Maschine sehen, aber sein Verhalten wird vollständig von der DOSBox-Software bestimmt, nicht von der Hardware des Hosts, auf dem DOSBox läuft. Das Intel-Handbuch kann eine nützliche Quelle für Dokumentation über VGA/CGA sein, aber bedenken Sie, dass alle Intel-spezifischen Funktionen oder Verhaltensweisen, die es dokumentiert, in DOSBox nicht vorkommen. Sie könnten Ihren Code auf der nackten Hardware booten, wenn Sie Ihre tatsächliche Intel HW programmieren wollten. Siehe auch das [x86-Tag-Wiki] (http://stackoverflow.com/tags/x86/info) für viele x86-Links (keine direkt relevant). –
Eine einfachere Möglichkeit, einen Pseudo-160x100-Grafikmodus zu erhalten, besteht darin, den standardmäßigen 80x50-VGA-Textmodus und eine benutzerdefinierte Schriftart mit 2x2 Blockzeichen zu verwenden. Eine andere Alternative wäre, den VGA-Grafikmodus 320x200 zu verwenden und die Breite und Höhe der Pixel beim Zeichnen einfach zu verdoppeln. –