cvsuser     05/03/21 11:22:28

  Modified:    .        MANIFEST
               examples/assembly mandel.pasm
  Added:       examples/assembly mandel.imc
  Log:
  Added a PIR version of mandel.pasm .
  
  Revision  Changes    Path
  1.852     +1 -0      parrot/MANIFEST
  
  Index: MANIFEST
  ===================================================================
  RCS file: /cvs/public/parrot/MANIFEST,v
  retrieving revision 1.851
  retrieving revision 1.852
  diff -u -r1.851 -r1.852
  --- MANIFEST  19 Mar 2005 16:19:57 -0000      1.851
  +++ MANIFEST  21 Mar 2005 19:22:26 -0000      1.852
  @@ -443,6 +443,7 @@
   examples/assembly/lexical3.pasm                   [main]doc
   examples/assembly/life.pasm                       [main]doc
   examples/assembly/local_label.pasm                [main]doc
  +examples/assembly/mandel.imc                      [main]doc
   examples/assembly/mandel.pasm                     [main]doc
   examples/assembly/mops.pasm                       [main]doc
   examples/assembly/mops_p.pasm                     [main]doc
  
  
  
  1.3       +4 -4      parrot/examples/assembly/mandel.pasm
  
  Index: mandel.pasm
  ===================================================================
  RCS file: /cvs/public/parrot/examples/assembly/mandel.pasm,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- mandel.pasm       30 Jan 2004 11:25:04 -0000      1.2
  +++ mandel.pasm       21 Mar 2005 19:22:28 -0000      1.3
  @@ -1,9 +1,9 @@
  -# Copyright (C) 2001-2003 The Perl Foundation.  All rights reserved.
  -# $Id: mandel.pasm,v 1.2 2004/01/30 11:25:04 mikescott Exp $
  +# Copyright (C) 2001-2005 The Perl Foundation.  All rights reserved.
  +# $Id: mandel.pasm,v 1.3 2005/03/21 19:22:28 bernhard Exp $
   
   =head1 NAME
   
  -examples/assembly/mandel.pasm - Print the Mandlebrot set
  +examples/assembly/mandel.pasm - Print the Mandelbrot set
   
   =head1 SYNOPSIS
   
  @@ -12,7 +12,7 @@
   =head1 DESCRIPTION
   
   This really does something - prints an ASCII-art representation of the
  -Mandlebrot set.
  +Mandelbrot set.
   
   Translated from C code by Glenn Rhoads into Parrot assembler by Leon
   Brocard <[EMAIL PROTECTED]>.
  
  
  
  1.1                  parrot/examples/assembly/mandel.imc
  
  Index: mandel.imc
  ===================================================================
  # Copyright (C) 2005 The Perl Foundation.  All rights reserved.
  # $Id: mandel.imc,v 1.1 2005/03/21 19:22:28 bernhard Exp $
  
  =head1 NAME
  
  examples/assembly/mandel.imc - Print the Mandelbrot set
  
  =head1 SYNOPSIS
  
      % ./parrot examples/assembly/mandel.imc
  
  =head1 DESCRIPTION
  
  This prints an ASCII-art representation of the Mandelbrot set.
  
  Translated from C code by Glenn Rhoads into Parrot assembler by Leon
  Brocard <[EMAIL PROTECTED]>.
  Translated from PASM to PIR by Bernhard Schmalhofer.
  
  The C code is:
  
      main() {
          int x, y, k;
          char *b = " .:,;!/>)|&IH%*#";
          float r, i, z, Z, t, c, C;
          for (y=30; puts(""), C = y*0.1 - 1.5, y--;) {
              for (x=0; c = x*0.04 - 2, z=0, Z=0, x++ < 75;) {
                  for (r=c, i=C, k=0; t = z*z - Z*Z + r, Z = 2*z*Z + i, z=t, 
k<112; k++)
                      if (z*z + Z*Z > 10) break;
                  printf ("%c", b[k%16]);
              }
          }
      }
  
  =cut
  
  .sub main @MAIN
  
          .local string b
          .local int    x, y, k
          .local num    r, i, z, Z, t, c, C, temp1, temp2
  
        b = " .:,;!/>)|&IH%*#"
        set y, 30
  
  YREDO:  #  C = y*0.1 - 1.5
          mul C, y, 0.1
        sub C, C, 1.5
  
        set x, 0
  
  XREDO:  # c = x*0.04 - 2
        mul c, x, 0.04
        sub c, c, 2.0
        set z, 0
        set Z, 0
  
          set r, c
          set i, C
  
          set k, 0
  
  KREDO:  # t = z*z - Z*Z + r
          mul temp1, z, z
          mul temp2, Z, Z
          sub t, temp1, temp2
          add t, t, r
  
          # Z = 2*z*Z + i
          add Z, Z, Z
          mul Z, Z, z
          add Z, Z, i
  
          # z = t
          set z, t
  
          # if (z*z + Z*Z > 10) break;
          mul temp1, z, z
          mul temp2, Z, Z
          add temp1, temp1, temp2
          gt temp1, 10.0, PRINT
  
        inc k
        lt k, 112, KREDO
  
  PRINT:  mod I4, k, 16
          substr S2, b, I4, 1
        print S2
  
        inc x
        lt x, 75, XREDO
  
        print "\n"
        dec y
        gt y, 0, YREDO
  
  END:
  
  .end
  
  
  

Reply via email to