Функции для работы с XMode (320x200x256)
Комментариев:
Эхххх, какой был видео-режим…какие для него писали демки.
Приведенный ниже код содержит простейшие функции для работы с XMode: включить режим, восстановить режим, вывести точку, изменить палитру, подождать обратного хода луча (интересно, как это выглядит на LCD мониторах :)), вывести символ и очистить экран.
Вообще приведенный код вряд ли может быть использован для дела… разве что лабораторные сдавать или поэкспериментировать…или так, для истории :)
SMARTCODE SEGMENTASSUME cs:CodeP386PUBLIC _mSetModePUBLIC _mRestoreModePUBLIC _mPutPixelPUBLIC _mWaitRetRacePUBLIC _mChangePalettePUBLIC _mWriteSymbPUBLIC _mClrScrPUBLIC _OldMode_OLDMODE DB 0;################## SetMode ##################################################_mSetMode PROC Farmov ah,0Fhint 10hmov [_OldMode],Almov ax,0013h ; 320x200x256int 10hret_mSetMode ENDP;################## SetMode ##################################################_mRestoreMode PROC Farxor ah,ahmov al,[_OldMode]int 10hret_mRestoreMode ENDP;################## PutPixel #################################################_mPutPixel PROC Farpush bpmov bp,spmov ax,0A000hmov es,axmov cx,320mov ax,ss:[bp+08] ;Ymov bx,ss:[bp+10] ;Xmul cxadd ax,bxmov dx,ss:[bp+06] ;Colormov di,axmov Byte Ptr es:[di],dlpop bpret 6_mPutPixel ENDP;################## WaitRetRace ##############################################_mWaitRetRace PROC Farmov dx,03DAhRetR1: in al,dxtest al,08hjne RetR1RetR2: in al,dxtest al,08hje RetR2ret_mWaitRetRace ENDP;################## ChangePalette ############################################_mChangePalette PROC Farpush bpmov bp,spmov ax, ss:[bp+12]mov dx, 3C8hout dx, alinc dx ;DX = 3C9h (Pal DATA REG)mov ax, ss:[bp+10]out dx, al ;красная составляющаяmov ax, ss:[bp+08]out dx, al ;зеленая составляющаяmov ax, ss:[bp+06]out dx, al ;синяя составляющаяpop bpret 8_mChangePalette ENDP;############## Write ########################################################_mWriteSymb PROC Farpush bpmov bp,sp ;6-Символmov ax,[bp+10] ;8-Colormov dh,al ;10-Ymov bx,[bp+12] ;12-Xmov dl,blmov ah,02hint 10hmov cx,1mov ax,[bp+06]xor ah,ahmov bx,[bp+08]mov ah,09hint 10hpop bpret 8_mWriteSymb ENDP;############## Clear Screen #################################################_mClrScr PROC Farpush espush 0A000hpop esxor di,dixor eax,eaxmov cx,16000rep stosdpop esret_mClrScr ENDPCODE ENDSEND
Download this code: xmode.asm