 ;Lookup table of rays to cast
.lookup

 ldfs f2,f_128
 ldfs f5,f_16384

 adr r2,bss
 mov r1,#-128
.ylook
 mov r0,#-160
 flts f1,r1
 mufs f4,f1,f1
.xlook
 ;f0=x
 ;f1=y
 ;f2=z
 ;f3=l
 ;f4=y^2
 ;f5=z^2/16384
 flts f0,r0
 mufs f3,f0,f0
 adfs f3,f3,f4
 adfs f3,f3,f5
 sqts f3,f3
 dvfs f0,f0,f3
 dvfs f6,f1,f3
 dvfs f7,f2,f3
 mufs f0,f0,f5
 mufs f6,f6,f5
 mufs f7,f7,f5
 fix r3,f0
 fix r4,f6
 fix r5,f7
 stmia r2!,{r3-r5}
 add r0,r0,#2
 cmp r0,#160
 blt xlook
 swi 256+46
 add r1,r1,#2
 cmp r1,#128
 blt ylook

 str r2,sqr
 ;Sqaure root table
 mov r0,#0
 str r0,[r2],#4
.sloop
 flts f0,r0
 sqts f0,f0
 fix r1,f0
 str r1,[r2],#4
 add r0,r0,#1
 cmp r0,#sq_max
 bne sloop

 ;Division table
 mov r1,#0
 str r1,[r2],#4
 mov r0,#1
 ldfs f1,f_16384
 ldfs f2,f_128
.divlook
 flts f0,r0
 dvfs f0,f0,f2
 frds f0,f0,#1
 mufs f0,f1,f0
 fix r1,f0
 str r1,[r2],#4
 add r0,r0,#1
 cmp r0,#16384
 bne divlook

