这段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
相关产品推荐
相关产品推荐

