about summary refs log blame commit diff stats
path: root/linux/apps/raytracing/1.mu
blob: dfb4ec1391186ee978377b809efe1813c4ad2412 (plain) (tree)
1
2
3
4
5
6
7
8
9




                                                                             

                                      

                     
                       


















                                      
          
 
# Listing 1 of https://raytracing.github.io/books/RayTracingInOneWeekend.html
# (simplified)
#
# To run (on Linux):
#   $ git clone https://github.com/akkartik/mu
#   $ cd mu/linux
#   $ ./translate apps/raytracing/1.mu
#   $ ./a.elf > 1.ppm

fn main -> _/ebx: int {
  print-string 0, "P3\n256 256\n255\n"
  var j/ecx: int <- copy 0xff
  {
    compare j, 0
    break-if-<
    var i/eax: int <- copy 0
    {
      compare i, 0xff
      break-if->
      print-int32-decimal 0, i
      print-string 0, " "
      print-int32-decimal 0, j
      print-string 0, " 64\n"
      i <- increment
      loop
    }
    j <- decrement
    loop
  }
  return 0
}