; (C) Megaspy Research Inc. 1995 ; ; 16 bit fixed point Mandelbrot iterator ; ; by Mats Byggm„star 17.6 Jakobstad ITERDEPTH equ 32 XSTART equ 0fffdfe00h YSTART equ 0fffee000h XSTEP equ 000000240h YSTEP equ 0000002d0h .386 .model tiny locals segment code use16 assume CS:code, DS:code org 100h _main: mov AX, 0013h int 10h mov AX, 0a000h mov ES, AX nextline: mov [x], XSTART mov [len], 320 nextpixel: mov EDI, [y] shr EDI, 7 mov AX, DI mov [yo], DI imul AX shrd AX, DX, 9 mov BX, AX mov ESI, [x] shr ESI, 7 mov AX, SI mov [xo], SI imul AX shrd AX, DX, 9 mov CX, AX mov BP, ITERDEPTH iterate: ; SI = x ; DI = y ; CX = AX = xý ; BX = yý ; BP = iteration limit add AX, BX cmp AX, 0800h ; xý+yý > 4.0 jg foundcolor sub CX, BX add CX, [xo] ; CX = temp = xo+xý-yý mov AX, SI imul DI shrd AX, DX, 8 add AX, [yo] mov DI, AX ; DI = y = yo+2.0úxúy imul AX shrd AX, DX, 9 mov BX, AX ; BX = yý = yúy mov SI, CX ; SI = x = temp mov AX, CX imul AX shrd AX, DX, 9 mov CX, AX ; CX = AX = xý = xúx dec BP jnz iterate foundcolor: mov AX, BP mov DI, [destp] test AX, AX jz skip add AL, 32 mov ES:[DI], AL skip: inc DI mov [destp], DI add [x], XSTEP dec [len] jnz nextpixel add [y], YSTEP dec [height] jnz nextline mov AH, 0 int 16h mov AX, 0003 int 10h mov DX, offset message mov AH, 9 int 21h mov AH, 04ch int 21h y dd YSTART height dw 200 destp dw 0 message db 10,13,'Mandelbrot iterator by Mats Byggm„star 1995',10,13,'$' progendw label word progendd label dword ; Variables outside the .com file x equ progendd len equ progendw+4 xo equ progendw+8 yo equ progendw+10 ends code end _main