Неполучается нарисовать линию (Bresenham's algorithm). Настраиваются следующие регистры:
LINEINIT=(2048/*XINIT*/)|(2048<<16/*YINIT*/);
LINEPATTRN=0x000fffff;//solid line pattern
DESTLINELENGTH=destSurf->Lenght;
DESTPIXELSTRT=((dsX1%4)*8/*SPEL*/)|((((dsX2-1)%4)*8)<<16/*EPEL*/);
BLKDESTSTRT=destSurf->StartAddress+dsY1*destSurf->Lenght*4+dsX1;
BLOCKMASK=color;
if(abs(dsX2-dsX1)==abs(dsY2-dsY1))LINEINC=(4095/*XINC*/)|(4095<<16/*YINC*/);
else if(abs(dsX2-dsX1)<abs(dsY2-dsY1))LINEINC=((abs(dsX2-dsX1)*4095/abs(dsY2-dsY1))/*XINC*/)(4095<<16/*YINC*/);
else if(abs(dsX2-dsX1)>abs(dsY2-dsY1))LINEINC=(4095/*XINC*/)|((abs(dsY2-dsY1)*4095/abs(dsX2-dsX1))<<16/*YINC*/);
BLKDESTWIDTH=abs(dsX2-dsX1)/4096;
BLKDESTHEIGHT=abs(dsY2-dsY1)/4096;
BLOCKCTRL=0;
BLOCKCTRL=(2<<17/*P*/)|(0<<14/*BG */)|(1<<4/*LINE*/)|(1/*ENABLE*/);
где (dsX1,dsY1) координаты начальной точки,
(dsX2,dsY2) координаты конечной точки,
destSurf->StartAddress адрес начала поверхности в памяти,
destSurf->Lenght ширина поверхности в word'ах
Что делаю неправильно?