.data .align 2 _sccsid: .data 2 L12: .ascii "%W% (cmd@ukc) %G%" .data .long L12 .comm _pixel,1024 .comm _gap,4096 .text LL0: .align 1 .globl _process .text .data 1 L55: .ascii "%3d %3d %4d %8.0f\0" .text .data 1 L61: .ascii "pixel file write error\0" .text _process: .word 0xfc0 /* * main process function - variables are allocated as follows: * * r11 count * r10 j * r9 i * r8 z_real * r7 z_imag * r6 z2_real * r5 z2_imag * r4 c_real * r3 c_imag * r2 float_pixels * -4(fp) total */ subl2 $4,sp /* room for total */ clrf -4(fp) /* total = 0.0 */ cvtlf _npixel,r2 /* float_pixels = npixel */ clrl r10 /* for (j = 0; j < npixel; j++) */ jbr L37 L2000001: cvtdf _side,r0 /* r0 = (float) side */ cvtlf r10,r5 /* r5 = (float) j */ mulf2 r5,r0 /* side * j */ divf2 r2,r0 /* ... / float_pixels */ cvtfd r0,r0 addd3 _orig_real,r0,_gap[r10] /* gap[j] = orig_real + ... */ incl r10 L37: cmpl r10,_npixel jlss L2000001 clrl r9 /* for (i = 0; i < npixel; i++) */ jbr L40 L2000007: cvtlf r9,r0 /* (float) i */ cvtdf _side,r5 /* (float) side */ mulf2 r5,r0 /* side * i */ divf2 r2,r0 /* ... / float_pixels */ cvtfd r0,r0 addd2 _orig_imag,r0 cvtdf r0,r3 /* put c_imag in r3 */ clrl r10 /* for (j = 0; ... */ jbr L43 L2000005: cvtdf _gap[r10],r8 movf r8,r4 /* c_real in r4 */ movf r3,r7 /* z_imag in r7 */ clrl r11 /* for (count = 0; ... */ jbr L46 L2000003: /* * this next bit has been heavily optimised. */ mulf3 r8,r8,r6 /* z2_real = z_real * z_real */ mulf3 r7,r7,r5 /* z2_imag = z_imag * z_imag */ addf3 r6,r5,r0 /* z2_real + z2_imag */ cmpf r0,$0f4.0 /* ... > 4.0 */ jgtr L45 /* break */ mulf3 r7,r8,r0 /* z_real * z_imag */ mulf2 $0f2.0,r0 /* ... * 2.0 */ addf3 r0,r3,r7 /* z_imag = ... + c_imag */ subf3 r5,r6,r0 /* z2_real - z2_imag */ addf3 r0,r4,r8 /* z_real = ... + c_real */ incl r11 L46: cmpl r11,_niter jlss L2000003 L45: cvtlw r11,_pixel[r10] /* pixel[j] = count */ incl _hist[r11] /* hist[count] += 1 */ cvtlf r11,r0 /* total += (float) count */ addf2 r0,-4(fp) incl r10 L43: cmpl r10,_npixel /* end of loop with j */ jlss L2000005 pushl _pixfd /* fwrite(pixel, ... */ pushl $1 ashl $1,_npixel,-(sp) pushal _pixel calls $4,_fwrite movl _pixfd,r0 /* if (ferror(pixfd)) */ jbc $5,16(r0),L38 pushal L61 calls $1,_perror /* perror() */ ret /* return */ L38: incl r9 L40: cmpl r9,_npixel jlss L2000007 /* outermost loop */ ret