;--------------------------------------------------------------------- ; SIERPIN - Sierpinski's Triangle, 56 bytes! - Tylisha C. Andersen ;--------------------------------------------------------------------- .model tiny .code .186 org 100h ;--------------------------------------------------------------------- main: mov al,12h ; set video mode 12h int 10h mov di,3 ; set di = 3 for divide, video mode m_1: imul bp,9421 ; generate random number inc bp mov ax,bp ; dx:ax = random number xor dx,dx div di ; divide by 3 dec dx ; check result, go to top left if 0, jz m_3 ; top right if 1, and bottom if -1 jg m_2 add si,480 ; move to bottom part: sub cx,320 ; x = x + 0.5, y = y + 1 m_2: add cx,640 ; move to top right part: x = x + 1 m_3: shr cx,1 ; shrink by a factor of 2 shr si,1 mov ax,0C0Fh ; put pixel at (x, y) in white mov dx,si ; using BIOS call - slow, but works int 10h mov ah,1 ; check for key press int 16h jz m_1 ; loop while no key pressed xchg ax,di ; restore text mode int 10h ret ; return to DOS end main