Preliminary setup: The line goes from (x1,y1) to (x2,y2). dx = max(abs(x2 - x1), abs(y2 - y1)) ; dy = min(abs(x2 - x1), abs(y2 - y1)) ; Register setup: bltadat = $8000 bltbdat = line texture pattern ($ffff for a solid line) bltafwm = $ffff bltalwm = $ffff bltamod = 4 * (dy - dx) bltbmod = 4 * dy bltcmod = width of the bitplane in bytes bltdmod = width of the bitplane in bytes bltapt = (4 * dy) - (2 * dx) bltbpt = unused bltcpt = word containing the first pixel of the line bltdpt = word containing the first pixel of the line bltcon0 bits 15-12 = x1 modulo 15 bltcon0 bits srca, srcc, and srcd = 1 bltcon0 bit srcb = 0 If exclusive-or line mode: _ _ then BLTCON0 lf control byte = abc + ac _ else BLTCON0 lf control byte = ab + ac bltcon1 bit linemode = 1 bltcon1 bit ovflag = 0 bltcon1 bits 4-2 = octant number from table bltcon1 bits 15-12 = start bit for line texture (0 = last significant If (((4 * dy) - (2 * dx)) < 0): bit) then bltcon1 bit signflag = 1 else bltcon1 bit signflag = 0 If one pixel/row: then bltcon1 bit onedot = 1 else bltcon1 bit onedot = 0 bltsize bits 15-6 = dx + 1 bltsize bits 5-0 = 2 Warning: -------- You must set the bltsize register last as it starts the blit.