DECLARE SUB blurrh () DECLARE SUB blurrv () DECLARE SUB smooth () DECLARE SUB copy2to1 () DECLARE SUB setpal () DECLARE SUB showpic1 () DEFINT I-N 'low-pass filter 'used to blur vertically 'then horizontally SCREEN 12 VIEW (160, 80)-(480, 400), , 12 WINDOW (0, 0)-(64, 64) CONST grey0 = 65536 + 256 + 1 DIM SHARED pic1(63, 63) AS INTEGER, pic2(63, 63) AS INTEGER CONST k1 = 1024 CONST c1 = k1 / 16 setpal RANDOMIZE TIMER FOR i = 0 TO 63 'Diamond with noise FOR j = 0 TO 63 k = 63 - ABS(i - 32) - ABS(j - 32) k = k + 12 * RND 'change numbers to change image pic1(i, j) = k NEXT NEXT showpic1 FOR n = 1 TO 3 LOCATE 3, 1 PRINT "pass "; n blurrh 'horizontal blur blurrv 'vertical blur NEXT SUB blurrh DIM a AS SINGLE, b AS SINGLE b = 3 'sets the 'blur' constant FOR j = 0 TO 63 a = pic1(0, j) FOR i = 1 TO 63 a = a + (pic1(i, j) - a) / b pic1(i, j) = a LINE (i, j)-STEP(1, 1), a \ 4, BF NEXT FOR i = 62 TO 0 STEP -1 a = a + (pic1(i, j) - a) / b pic1(i, j) = a LINE (i, j)-STEP(1, 1), a \ 4, BF NEXT NEXT END SUB SUB blurrv DIM a AS SINGLE, b AS SINGLE b = 3 'sets the 'blur' constant FOR i = 0 TO 63 a = pic1(i, 0) FOR j = 1 TO 63 a = a + (pic1(i, j) - a) / b pic1(i, j) = a LINE (i, j)-STEP(1, 1), a \ 4, BF NEXT FOR j = 62 TO 0 STEP -1 a = a + (pic1(i, j) - a) / b pic1(i, j) = a LINE (i, j)-STEP(1, 1), a \ 4, BF NEXT NEXT END SUB SUB copy2to1 FOR i = 0 TO 63 FOR j = 0 TO 63 pic1(i, j) = pic2(i, j) NEXT NEXT END SUB SUB setpal FOR i = 1 TO 15 PALETTE i, 4 * i * grey0 NEXT END SUB SUB showpic1 FOR i = 0 TO 63 FOR j = 0 TO 63 LINE (i, j)-STEP(1, 1), pic1(i, j) \ 4, BF NEXT NEXT END SUB SUB smooth FOR i = 1 TO 62 FOR j = 1 TO 62 m = 0 FOR k = i - 1 TO i + 1 FOR l = j - 1 TO j + 1 m = m + pic1(k, l) NEXT NEXT pic2(i, j) = m \ 9 NEXT NEXT END SUB