You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

这段Pascal代码设置的VGA模式是什么?是否为标准Mode X?

自定义VGA模式的识别与说明

你提供的这段来自Wiering Mario的Pascal代码如下:

{INIT: Configure VGA to mode ???}
{INIT: Configure VGA to mode ???}
{INIT: Configure VGA to mode ???}
{INIT: Configure VGA to mode ???}
{INIT: Configure VGA to mode ???}
{INIT: Configure VGA to mode ???}
{INIT: Configure VGA to mode ???}
{INIT: Configure VGA to mode ???}
 
    asm
        mov     ax,13h
        int     10h
    end;
{  if not InGraphicsMode then}
    InitVGA;



{    SetWidth (1610 shr 1);
        mov     ax, BYTES_PER_LINE shr 1
        push    ax

        pop     ax

}
 
    asm
                                 {3d4}
{        mov     dx, CRTC_INDEX
        mov     ax, 13h
        out     dx, al
        inc     dx
        in al,dx
        mov bl,al
}
        mov     dx, CRTC_INDEX {3d4 0x13 offset or logical width}
        mov     ax, 13h
        out     dx, al
        inc     dx
        mov al,bl
        add al,5   {0x28 to 0x2D???}
mov al,02Dh {0B4h} {028h}
mov al,02Dh
{05Ah}
        out     dx, al
    end;




    asm
     {underline}
        mov     dx, CRTC_INDEX
        mov     al, UNDERLINE
        out     dx, al
        inc     dx
        in      al, dx
        and     al, not 40h
mov al,0
        out     dx, al


    {mode control}
        dec     dx
        mov     al, MODE_CONTROL
        out     dx, al
        inc     dx
        in      al, dx
        or      al, 40h
mov al,0E3h
        out     dx, al
    end;




    asm
     {memory mode}
        mov     dx, SC_INDEX
        mov     al, MEMORY_MODE
        out     dx, al
        inc     dx
        in      al, dx
        and     al, not 8
        or      al, 4
mov al,6
        out     dx, al

    {graphics mode}
        mov     dx, GC_INDEX {0x3CE}
        mov     al, GRAPHICS_MODE
        out     dx, al
        inc     dx
        in      al, dx
        and     al, not 10h
mov al,40h
        out     dx, al
        dec     dx

   {miscellaneous}
        mov     al, MISCELLANEOUS
        out     dx, al
        inc     dx
        in      al, dx
        and     al, not 2
MOV AL,0E1h
        out     dx, al























    {vertical retrace end, turn off write protect}
      mov dx,03D4h
      mov ax,02C11h
      mov ax,00E11h
      out dx,ax


    {vertical total}
      mov ax,00D06h
      mov ax,0BF06h
      out dx,ax

{overflow register}
      mov ax,03E07h
      mov ax,01F07h
      out dx,ax

{vertical retrace start}
      mov ax,0EA10h
      mov ax,09C10h
      out dx,ax

{vertical display enable end}
      mov ax,0DF12h
      mov ax,08E12h
      out dx,ax


{start vertical blanking}
      mov ax,0E715h
      mov ax,09615h
      out dx,ax


{end vertical blanking}
      mov ax,00616h
      mov ax,0B916h
      out dx,ax



{vertical retrace end AND wr.prot}
      mov ax,0AC11h
      mov ax,08E11h
      out dx,ax


    end;





{END:  Configure VGA to mode ???}
{END:  Configure VGA to mode ???}
{END:  Configure VGA to mode ???}
{END:  Configure VGA to mode ???}
{END:  Configure VGA to mode ???}
{END:  Configure VGA to mode ???}
{END:  Configure VGA to mode ???}
{END:  Configure VGA to mode ???}

针对你的问题,解答如下:

  • 这个视频模式不是标准Mode X,它是一个自定义的360x240 256色VGA模式,属于Mode X的变种,有时也被称为"宽版Mode X"。
  • 标准Mode X的分辨率固定为320x240 256色,这段代码通过直接修改VGA的CRTC(阴极射线管控制器)寄存器,将水平分辨率从320扩展到360,同时保留了240的垂直分辨率和256色显示能力。
  • 代码的关键逻辑:先通过int 10h ax=13h进入标准320x200 256色模式,随后修改CRTC的0x13寄存器(设置为0x2D)调整水平显示宽度,同时修改垂直同步、显示启用等相关CRTC参数,最终实现360x240的显示效果。

内容的提问来源于stack exchange,提问作者Proyectos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 22:35:04