pcscrnio.h
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C头文件 代码 · 共 478 行 · 第 1/2 页
H
478 行
" push ebp " \
" mov cx, 0 " \
" mov dx, 3250h " \
" mov ax, 600h " \
_INT_10 \
" pop ebp " \
parm [ bh ] \
modify exact [ ax cx dx ];
extern uint_8 _ReadCRTCReg( uint_16 vidport, uint_8 regnb );
#pragma aux _ReadCRTCReg = \
"out dx, al ", \
"inc dx ", \
"in al, dx " \
parm [ dx ] [ al ] \
modify exact [ al dx ];
extern void _WriteCRTCReg( uint_16 vidport, uint_8 regnb, uint_8 value );
#pragma aux _WriteCRTCReg = \
"out dx, al ", \
"inc dx ", \
"mov al, ah ", \
"out dx, al " \
parm [ dx ] [ al ] [ ah ] \
modify exact [ al dx ];
#if 0
extern unsigned_8 VIDGetRow( unsigned_16 vidport );
#pragma aux VIDGetRow = \
" mov al, 0fh ", \
" out dx, al ", \
" inc dx ", \
" in al, dx " \
parm [ dx ] \
modify exact [ al dx ];
extern void VIDSetRow( unsigned_16 vidport, unsigned_8 row );
#pragma aux VIDSetRow = \
" mov al, 0fh ", \
" out dx, al ", \
" inc dx ", \
" mov al, ah ", \
" out dx, al " \
parm [ dx ] [ ah ] \
modify exact [ ax dx ];
extern void VIDSetPos( unsigned_16 vidport, unsigned_16 cursorpos );
#pragma aux VIDSetPos = \
" mov al, 0fh ", \
" out dx, al ", \
" inc dx ", \
" mov al, bl ", \
" out dx, al ", \
" dec dx ", \
" mov al, 0eh ", \
" out dx, al ", \
" inc dx ", \
" mov al, bh ", \
" out dx, al " \
parm [ dx ] [ bx ] \
modify exact [ al dx ];
extern unsigned_16 VIDGetPos( unsigned_16 vidport );
#pragma aux VIDGetPos = \
" mov al, 0fh ", \
" out dx, al ", \
" inc dx ", \
" in al, dx ", \
" mov ah, al ", \
" dec dx ", \
" mov al, 0eh ", \
" out dx, al ", \
" inc dx ", \
" in al, dx ", \
" xchg ah, al " \
parm [ dx ] \
modify exact [ ax dx ];
extern unsigned_8 VIDGetCol( unsigned_16 vidport );
#pragma aux VIDGetCol = \
" mov al, 0eh ", \
" out dx, al ", \
" inc dx ", \
" in al, dx " \
parm [ dx ] \
modify exact [ al dx ];
extern void VIDSetCurTyp( unsigned_16 vidport, unsigned_16 cursortyp );
#pragma aux VIDSetCurTyp = \
" push ax ", \
" mov al, 0ah ", \
" out dx, al ", \
" inc dx ", \
" mov al, ah ", \
" out dx, al ", \
" dec dx ", \
" mov al, 0bh ", \
" out dx, al ", \
" inc dx ", \
" pop ax ", \
" out dx, al " \
parm [ dx ] [ ax ] \
modify exact [ al dx ];
extern unsigned_16 VIDGetCurTyp( unsigned_16 vidport );
#pragma aux VIDGetCurTyp = \
" mov al, 0bh ", \
" out dx, al ", \
" inc dx ", \
" in al, dx ", \
" mov ah, al ", \
" dec dx ", \
" mov al, 0ah ", \
" out dx, al ", \
" inc dx ", \
" in al, dx ", \
" xchg ah, al " \
parm [ dx ] \
modify exact [ ax dx ];
#endif
extern void VIDWait( void );
#pragma aux VIDWait = \
" jmp x " \
" x: " \
modify exact [ ];
extern unsigned BIOSEGAInfo( void );
#pragma aux BIOSEGAInfo = \
" push ebp " \
" mov ah, 12h " \
" mov bx, 0ff10h " \
_INT_10 \
" shl ebx, 10h " \
" mov bx, cx " \
" pop ebp " \
modify exact [ ah ebx cx ] \
value [ ebx ];
extern unsigned_8 BIOSGetRows( void );
#pragma aux BIOSGetRows = \
" push es " \
" push ebp " \
" mov ax, 1130h " \
" mov bh, 0 " \
_INT_10 \
" inc dl " \
" pop ebp " \
" pop es " \
/* modify exact [ ax bh cx dl ] */ \
modify exact [ ax ebx ecx edx edi ] /* workaround bug in DOS4G */\
value [ dl ];
extern unsigned_16 BIOSGetPoints( void );
#pragma aux BIOSGetPoints = \
" push es " \
" push ebp " \
" mov ax, 1130h " \
" mov bh, 0 " \
_INT_10 \
" pop ebp " \
" pop es " \
/* modify exact [ ax bh cx dl ] */ \
modify exact [ ax ebx ecx edx edi ] /* workaround bug in DOS4G */\
value [ cx ];
extern void BIOSEGAChrSet( unsigned_8 vidroutine );
#pragma aux BIOSEGAChrSet = \
" push ebp " \
" mov ah, 11h " \
" mov bl, 0 " \
_INT_10 \
" pop ebp " \
parm [ al ] \
modify exact [ ah bl ];
extern void _ega_write( unsigned_16, unsigned_8, unsigned_8 );
#pragma aux _ega_write = \
" out dx, ax " \
parm [ dx ] [ al ] [ ah ] \
modify exact [ ];
extern unsigned_8 _vga_read( unsigned_16, unsigned_8 );
#pragma aux _vga_read = \
" out dx, al ", \
" inc dx ", \
" in al, dx " \
parm [ dx ] [ al ] \
modify exact [ al dx ];
extern void _disablev( unsigned_16 );
#pragma aux _disablev = \
" again: " \
" in al, dx ", \
" test al, 8 ", \
" je again ", \
" mov dx, 3c0h ", \
" mov al, 11h ", \
" out dx, al ", \
" mov al, 0 ", \
" out dx, al " \
parm [ dx ] \
modify exact [ al dx ];
extern void _enablev( unsigned_16 );
#pragma aux _enablev = \
" again: " \
" in al, dx ", \
" test al, 8 ", \
" je again ", \
" mov dx, 3c0h ", \
" mov al, 31h ", \
" out dx, al ", \
" mov al, 0 ", \
" out dx, al " \
parm [ dx ] \
modify exact [ al dx ];
extern unsigned_16 _vidstatesize( unsigned_16 requestedstate );
#pragma aux _vidstatesize = \
" mov ax, 1c00h " \
_INT_10 \
" cmp al, 1ch " \
" je end " \
" mov bx, 0 " \
" end: " \
parm [ cx ] \
modify exact [ ax bx ] \
value [ bx ];
extern void Fillb( void __far *dst, unsigned_8 value, unsigned_16 count );
#pragma aux Fillb = \
"db 0x65" \
" rep stosb " \
parm [ gs edi ] [ al ] [ ecx ] \
modify exact [ edi ecx ];
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?