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