Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
8
Добавлен:
01.05.2014
Размер:
1.51 Кб
Скачать
#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;
};
Соседние файлы в папке Лабораторная работа №34