Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторная работа №34 / OECM3
.CPP#include "dos.h"
#include "mem.h"
#include "stdlib.h"
void setrgb(char c,char r,char g, char b)
{
outport(0x3c8,c);
outport(0x3c9,g);
outport(0x3c9,b);
outport(0x3c9,r);
};
void pixel(unsigned x,unsigned y,unsigned c)
{
movedata(_DS,FP_OFF(c),0xa000,(y)*320+x,1);
};
int main(void)
{
randomize();
unsigned c;
asm{
mov ax,13h
int 10h
};
short far *mem=(short int*)MK_FP(0xa000,1);
short far *memw=(short int*)MK_FP(0xa000,0);
for(unsigned i=1;i<=32;i++)
{
setrgb(i ,2*i-1 ,0,0);
setrgb(i+32 ,63 ,2*i-1,0);
setrgb(i+64 ,63 ,63,2*i-1);
setrgb(i+96 ,63 ,63,63);
};
int x,y;
c=0;
while(inp(0x60)>0x80)
{x=0;
do{
y=10;
do{
c=0;
// movedata(0xa000,y*320+x,_DS,FP_OFF(c1),2);
// movedata(0xa000,y*320+x-2,_DS,FP_OFF(c2),2);
// movedata(0xa000,y*320+x+2,_DS,FP_OFF(c3),2);
// movedata(0xa000,(y+2)*320+x+2,_DS,FP_OFF(c4),2);
// c=(c1+c2+c3+c4)/4;
c=(mem[y*320+x]+
mem[y*320+x-2]+
mem[y*320+x+2]+
mem[(y+2)*320+x-2])/4;
if(c) c--;
// movedata(_DS,FP_OFF(c),0xa000,(y-2)*320+x,4);
// movedata(_DS,FP_OFF(c),0xa000,(y-1)*320+x+1,4);
memw[(y-2)*320+x]=c<<8;
memw[(y-1)*320+x+1]=c<<8;
y+=2;
}while(y<206);
y-=4;
c=random(2)*110;
// movedata(_DS,FP_OFF(c),0xa000,y*320+x,2);
mem[y*320+x]=c;
x+=2;
}while(x<320);
};
asm{mov ax, 3h
int 10h
};
return 0;
};