SMART CODE SEGMENT ASSUME cs:Code P386 PUBLIC _mSetMode PUBLIC _mRestoreMode PUBLIC _mPutPixel PUBLIC _mWaitRetRace PUBLIC _mChangePalette PUBLIC _mWriteSymb PUBLIC _mClrScr PUBLIC _OldMode _OLDMODE DB 0 ;################## SetMode ################################################## _mSetMode PROC Far mov ah,0Fh int 10h mov [_OldMode],Al mov ax,0013h ; 320x200x256 int 10h ret _mSetMode ENDP ;################## SetMode ################################################## _mRestoreMode PROC Far xor ah,ah mov al,[_OldMode] int 10h ret _mRestoreMode ENDP ;################## PutPixel ################################################# _mPutPixel PROC Far push bp mov bp,sp mov ax,0A000h mov es,ax mov cx,320 mov ax,ss:[bp+08] ;Y mov bx,ss:[bp+10] ;X mul cx add ax,bx mov dx,ss:[bp+06] ;Color mov di,ax mov Byte Ptr es:[di],dl pop bp ret 6 _mPutPixel ENDP ;################## WaitRetRace ############################################## _mWaitRetRace PROC Far mov dx,03DAh RetR1: in al,dx test al,08h jne RetR1 RetR2: in al,dx test al,08h je RetR2 ret _mWaitRetRace ENDP ;################## ChangePalette ############################################ _mChangePalette PROC Far push bp mov bp,sp mov ax, ss:[bp+12] mov dx, 3C8h out dx, al inc 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 bp ret 8 _mChangePalette ENDP ;############## Write ######################################################## _mWriteSymb PROC Far push bp mov bp,sp ;6-Символ mov ax,[bp+10] ;8-Color mov dh,al ;10-Y mov bx,[bp+12] ;12-X mov dl,bl mov ah,02h int 10h mov cx,1 mov ax,[bp+06] xor ah,ah mov bx,[bp+08] mov ah,09h int 10h pop bp ret 8 _mWriteSymb ENDP ;############## Clear Screen ################################################# _mClrScr PROC Far push es push 0A000h pop es xor di,di xor eax,eax mov cx,16000 rep stosd pop es ret _mClrScr ENDP CODE ENDS END