A Fixed point integer implementation and a line by line equivalent Floating point implementations of Mandelbrot in C.
The fixed point implementation is part one of understanding how to translate the floating point implementation into 8 bit assembler or other non-floating point platforms or languages.
This will be used as the basis for the Mandelbrot implementations in the SPAM-1 cpu.
The fixed point impl uses "8.8" encoding in 16 bit "short" integers, where for example decimal 3.5 is hex 0x380 and decimal 2.25 is hex 0x240 (0x40 being 1/4 of 0x100).
$ gcc float.c && ./a.out
: 0 10 20 30
00 : ........,,'''''''~~~=:[+~~'',,,,
01 : .......,,'''''''~~~=+[X:=~~'',,,
02 : .......,'''''''~~~=+; ==~''',,
03 : ......,'''''''~~~=+:[ <:+=~'',,
04 : ......,''''''~~==:#& [?=''',
05 : ......''''''~===+; #=~'',
06 : ......''''~=+==+: <+~'''
07 : .....,''~~=:;;;:[ <~'''
08 : .....'~~~==:x o& :~'''
09 : .....'~~==:/ :~'''
10 : .....~~=+:<O +~~''
11 : ..... [+~~''
12 : .....~~=+:<O +~~''
13 : .....'~~==:/ :~'''
14 : .....'~~~==:x o& :~'''
15 : .....,''~~=:;;;:[ <~'''
16 : ......''''~=+==+: <+~'''
17 : ......''''''~===+; #=~'',
18 : ......,''''''~~==:#& [?=''',
19 : ......,'''''''~~~=+:[ <:+=~'',,
20 : .......,'''''''~~~=+; ==~''',,
21 : .......,,'''''''~~~=+[X:=~~'',,,
$ gcc integer.c && ./a.out
: 0 10 20 30
00 : .........,,,,,,,,,,,,,,,,,,,,,,,
01 : ........,,,,,,,,,,,,,,,,,,,,,,,,
02 : .......,,,,''''''''''',,,,,,,,,,
03 : ......,,,'''''''~~=<=~'',,,,,,,,
04 : .....,,'''''''~~~=+[<+~~'',,,,,,
05 : ....,,'''''''~~~=+/ ;==~'',,,,,
06 : ....,''''''~~~=x/o& /;:/~'',,,,
07 : ...,''''''~===+[ /=''',,,
08 : ...''''~= ++::/ /+~''',,
09 : ...'~~~=+[ X / +~''',,
10 : ...~~~+:/o =~''',,
11 : ... :=~''',,
12 : ...~~~++/? =~''',,
13 : ...'~~~=+; < +~''',,
14 : ...''''~=&::::/ <+~''',,
15 : ...,''''''~===+/ /=''',,,
16 : ....,''''''~~~= / & ?[:&~'',,,,
17 : ....,,'''''''~~~=+/ [==~'',,,,,
18 : .....,,'''''''~~~=+[<+~~'',,,,,,
19 : ......,,,'''''''~~=&=~~',,,,,,,,
20 : .......,,,,''''''''''',,,,,,,,,,
21 : ........,,,,,,,,,,,,,,,,,,,,,,,,