Metropoli BBS
VIEWER: sierpin.asm MODE: TEXT (ASCII)
;---------------------------------------------------------------------
; 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
[ RETURN TO DIRECTORY ]