A small program that dumps the first meg to draw a Sierpingski Triangle. It will not work on CGA video cards. The routine also assumes that AH
is zero upon start. The program may therefor not work on all DOS versions.
The source code and a compiled version is available for download (1119 bytes).
;--------------------------------------------------------------------- ; 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