标签: vga

如果文本模式视频缓冲区不在0xB8000,那么它在哪里?

大约15年前,我曾经自娱自乐,并通过编写直接修改显示器上文本的错误代码来惹恼我的CS老师.这可以通过在配备VGA的PC兼容机上访问0xB8000的视频内存来轻松完成.

快进到今天,我决定通过调试端口尝试我的旧技巧,让我可以访问读取物理内存.令我满意的是,它仍然在我尝试过的第一个平台上工作.然后,令人沮丧的是,我发现它不适用于许多其他系统.它似乎不适用于所有系统都有UMA(共享内存)图形.

因此,对于所有BIOS编写者,低级操作系统人员和视频驱动程序专家的问题 - 如果我在具有共享图形内存的PC兼容系统上的常规80x25颜色文本模式,在实模式下,以及0xb8000 - 0xB8FFF都是0xFF,而不是给我屏幕上的内容,屏幕缓冲区在哪里?

graphics dos vga

21
推荐指数
2
解决办法
4665
查看次数

iPad VGA连接器 - 镜像屏幕在自己的应用程序?

是否可以通过VGA连接器镜像屏幕?什么都找不到.

vga ipad

19
推荐指数
2
解决办法
2万
查看次数

什么是DOS中字符表的内存地址?

DOS中字符表的地址是什么,我们可以通过操纵每个字符的像素来创建新的字体和符号?

我知道用BIOS中断来改变它,但是我只需要dos中字符表的内存地址来直接访问.

c memory assembly dos vga

13
推荐指数
2
解决办法
939
查看次数

现代 PC 视频硬件是否支持硬件中的 VGA 文本模式,或者 BIOS 是否模拟它(使用系统管理模式)?

当您将一个字节(例如(0x31)存储到物理线性地址的VGA 文本(模式 03)帧缓冲区中时),在以 16 位传统 BIOS MBR 模式启动的现代 PC 硬件上究竟发生了什么? 将该地区MTRR设置为 UC商店有多慢在一台 Kaby Lake iGPU 笔记本电脑上的实验测试表明,WC 上的 clflushopt 与 VGA 内存的 UC 速度大致相同。但没有 clflushopt,存储到 WC 内存永远不会离开 CPU 并且根本不更新屏幕,运行速度超快.)'1'B8000mov [es:di], eaxmov

如果它不是每个商店的 SMI,是否有任何方法可以在用户空间中的一块 WB 内存上估算此成本,以进行性能实验而无需实际重新启动到实模式?(例如,使用 BSS 页面作为实际上并不在任何地方显示的假装帧缓冲区)。

相应的字体字形在下一次刷新时出现在屏幕上,但硬件扫描是否真的从 VRAM(或 iGPU 的 DRAM)读取该 ASCII 字符并动态映射到位图字体字形?或者每个存储或每个 vblank 都有一些软件拦截,所以真正的硬件只需要处理位图帧缓冲区?


众所周知,传统 BIOS 引导使用系统管理模式 (SMM)将 USB kbd/鼠标模拟为 PS/2 设备。我想知道它是否也用于 VGA 文本模式帧缓冲区。我认为它用于VGA的I …

performance assembly bios vga x86-16

13
推荐指数
2
解决办法
1199
查看次数

程序集 8086 中的图形模式

我有一个被调用的变量,average在我的 中DATASEG,它每次都会改变,因为用户每次输入不同的输入。我想要做的是转到图形模式(VGA),然后在那里打印您的平​​均值是:然后平均值我知道如何更改为这样的图形模式:

mov ax, 13h  
int 10h
Run Code Online (Sandbox Code Playgroud)

打印平均值后,如果平均值高于 75,我想打印在下面你是个好学生,继续努力,如果不是。别担心,你会好起来的!提前致谢。

graphics assembly vga emu8086

9
推荐指数
1
解决办法
9589
查看次数

带VHDL的VGA控制器

我正在尝试使用Terasic的一些书籍和Altera DE1开发套件来学习VHDL编程.

这里的问题是我正在尝试编程一个VGA控制器,分辨率为640x480(虽然我的屏幕是一台1280x1024的TFT LCD).

我在使用代码时遇到了一些问题.

我使用FSM来制作垂直和水平信号,另一个块用于驱动RGB输入,还有一个来自DE1的27 MHz时钟.

我认为代码有问题,因为我在屏幕上打印的图像尺寸不正确(640x480)但更大(约1174x980).

到现在为止,我试图在屏幕上放一个唯一的颜色来简化它,直到我发现错误.

我的项目有3个文件,1个用于块RGB,1个用于FSM,另一个用于实例化它们.

我会很感激某种帮助来解决这个问题,因为我已经努力想出来,但我看不出错误在哪里.

非常感谢!

奥马尔

VGA控制器文件

library ieee;
use ieee.std_logic_1164.all;

entity VGA_controller is
     port(clk, reset : in std_logic;
        Hsync,Vsync : out std_logic;
        R,G,B : out std_logic_vector(3 downto 0));
end entity;

architecture arch of VGA_controller is

component FSM_sync is
    port(clk,reset : in std_logic;
        Hsync,Vsync,VIDON : out std_logic;
        Vcount,Hcount : out integer range 0 to 799);
end component;

component VGA_display is
    port(hcount,vcount : in integer range 0 to 799;
        r,g,b : out std_logic_vector(3 downto …
Run Code Online (Sandbox Code Playgroud)

fpga vhdl vga

7
推荐指数
1
解决办法
1万
查看次数

使用UIScreen驱动VGA显示器 - 似乎没有显示UIWindow?

嗨,您好,

我正在尝试使用UIScreen在iPad上使用VGA加密狗来驱动单独的屏幕.

这是我在根视图控制器的viewDidLoad中得到的:

//Code to detect if an external display is connected to the iPad.
 NSLog(@"Number of screens: %d", [[UIScreen screens]count]);

 //Now, if there's an external screen, we need to find its modes, itereate through them and find the highest one. Once we have that mode, break out, and set the UIWindow.

 if([[UIScreen screens]count] > 1) //if there are more than 1 screens connected to the device
 {
  CGSize max;
  UIScreenMode *maxScreenMode;
  for(int i = 0; i < [[[[UIScreen screens] …
Run Code Online (Sandbox Code Playgroud)

iphone vga uiwindow ipad iphone-sdk-3.2

6
推荐指数
1
解决办法
1万
查看次数

组装 x86-16 中的模式 X,为什么平面 1 不打印,所有其他平面的顺序都不正确?

我在 DosBox 0.74 上用 TASM 3.0 编写,我正在尝试在模式 x(调整 13h,未链接模式 13)中编写,但在这里您可以在图像中看到,它不太正确。似乎平面 1(第二个平面)根本没有打印,所有其他平面的顺序都不正确。我知道这里的代码效率低下,但我想让它工作然后清理它。

输出

proc showBMP
    push cx
    mov ax, 0A000h
    mov es, ax
    mov cx, [BMPHeight]
    mov ax, [BMPWidth]
    xor dx, dx
    mov si, 4
    div si
    mov bp, dx
    mov dx, [BMPX]
    showBMP_nextLine:
        call VGAPlaneStartBMP
        push cx
        push dx
        mov di, cx
        add di, [BMPY]
        mov cx, di
        shl cx, 6
        shl di, 8
        add di, cx
        add di, dx
        mov ah, 3fh
        mov cx, [BMPWidth]
        add …
Run Code Online (Sandbox Code Playgroud)

graphics assembly dos vga x86-16

6
推荐指数
1
解决办法
109
查看次数

组装在模式 x 中读取平面是否需要与写入不同的输出到 VGA 端口?

1我在 DosBox 0.74 上用 TASM 3.0 写,我想用模式 x(调整 13h,非链接模式 13)写,我遇到了一个问题,你如何在图像中看到,每一行都被打印出来,但是在每行,每组四个像素只打印第一个像素的颜色,这是在VRAM中的不同空间打印图像进行双缓冲后,因此所有四个平面都有第一个平面的数据。

这是图像的打印方式(这是没有双缓冲区的直接打印,是的,计时器有问题,但没关系)

在此处输入图片说明

这是使用双缓冲打印图像的方式

在此处输入图片说明

我确实认为问题在于模式x时VGA端口中的数据与读写不同,这里是选择VGA平面的代码

proc VGAPlaneSelect
    push ax
    push dx
    push cx
    mov al, 02h
    mov dx, 03C4h
    out dx, al
    VGAPlaneSelect_start:
    mov ax, 1
    mov cl, [VGAPlane]
    shl ax, cl
    cmp [VGAPlane], 4
    jne VGAPlaneSelect_end
        mov [VGAPlane], 0
        jmp VGAPlaneSelect_start
    VGAPlaneSelect_end:
    mov dx, 03C5h
    out dx, al
    pop cx
    pop dx
    pop ax
    ret
endp VGAPlaneSelect
Run Code Online (Sandbox Code Playgroud)

如果输出不是问题,这里是内存传输的代码:

    proc DoubleBuffer
    mov ax, 0A000h
    mov es, ax …
Run Code Online (Sandbox Code Playgroud)

x86 assembly dos vga x86-16

6
推荐指数
1
解决办法
99
查看次数

当监视器与D-sub连接器连接时,linux会发出事件吗?

我想编写一个软件,当监视器与D-sub连接器连接时,该软件会弹出,并要求用户镜像监视器或扩展监视器.

但是当d-sub连接时我没有发现任何事件.在Windows Vista上,如果连接显示器,vista可以弹出一个软件到同一个东西.

有谁知道如何检测d-sub连接事件并在linux中处理它?

非常感谢!

linux x11 vga

5
推荐指数
1
解决办法
1555
查看次数

标签 统计

vga ×10

assembly ×5

dos ×4

graphics ×3

x86-16 ×3

ipad ×2

bios ×1

c ×1

emu8086 ×1

fpga ×1

iphone ×1

iphone-sdk-3.2 ×1

linux ×1

memory ×1

performance ×1

uiwindow ×1

vhdl ×1

x11 ×1

x86 ×1